python django 中的计算字段

Calculated fieds in python django

我的数据库中有一个 Table,其中包含字段 idbody_tempstatus,其定义如下 class:

class Temperature(models.Model):
    ...
    id = models.AutoField(primary_key=True)
    body_temp = models.DecimalField(max_digits=3, decimal_places=1)
    status = models.CharField(max_length=20)
    ...

字段 body_temp 将通过表单填充,另一方面,我希望字段 status 根据字段 [=13] 中输入的值存储字符串=]. 如果字段body_temp中输入的温度值小于38,我希望字段status存储一个字符串normal。 但是,如果字段body_temp中输入的温度值大于或等于38,我希望字段status存储一个字符串suspect。 我该怎么做?

您可以将您的状态字段设置为 属性,然后它会被即时计算

class Temperature(models.Model):
    ...
    id = models.AutoField(primary_key=True)
    body_temp = models.DecimalField(max_digits=3, decimal_places=1)

    @property
    def status(self):
        if self.body_temp < 38:
            return 'normal'
        else:
            return 'suspect'

或者您可以 override save() 方法在任何编辑中计算此字段并将结果存储在数据库中

class Temperature(models.Model):
    ...
    id = models.AutoField(primary_key=True)
    body_temp = models.DecimalField(max_digits=3, decimal_places=1)
    status = models.CharField(max_length=20)
    ...

    def save(self, *args, **kwargs):
        if self.body_temp < 38:
            self.status = 'normal'
        else:
            self.status = 'suspect'
        super().save(*args, **kwargs)