我的数据库中有一个包含字段id
、body_temp
和status
的表,它由以下类定义:
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
存储基于在字段body_temp
中输入的值的字符串。如果在字段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'
或者,您可以覆盖save((方法来计算任何编辑上的此字段,并将结果存储在DB 中
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)