所以基本上我有一个具有外键校准的型号设备。我希望在Equipment中有一个字段为'latest_calibrated_date',它从最新创建的校准中获取'cal_date'。这就是我现在所拥有的:
def latest_calibration_date(self):
return Calibration.objects.filter(cal_asset__id = self.id).order_by('-id')[0].cal_date
但是,出于其他一些应用程序的目的,我想让这不是一个方法,而是一个领域。所以我在考虑使用latest_calibration_date = models.DateField()并在每次添加新校准时更新它。我怎么能这样做?
答案 0 :(得分:1)
正如 Daniel Roseman 所指出的那样,您可以在save
模型上覆盖Calibration
方法。例如:
class Calibration(model.Model):
# your fields
def save(self, *args, **kwargs):
super(Calibration, self).save(*args, **kwargs)
# update latest calibration date
您可以通过多种方式存储参数,例如通过创建Parameter
模型来存储变量。
class Parameter(models.Model):
key = models.CharField(max_length=255, unique=True)
value = models.IntegerField()
description = models.TextField(blank=True, null=True)
def __str__(self):
return self.key
然后又在save
:
import time
p = Parameter.objects.get(key='LATEST_CALIBRATION_DATE')
p.value = time.time() # save in UNIX timestamp
p.save()
或您喜欢的任何格式。