python django中的计算字段



我的数据库中有一个包含字段idbody_tempstatus的表,它由以下类定义:

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)

相关内容

  • 没有找到相关文章

最新更新