我在模型中有2个字段,当我更改一个字段的值以计算另一个字段时,我需要
示例:
Date_mission1_equipe=models.DateField (null=True,blank=True,max_length=200)
Date_mission2_equipe=models.DateField (null=True,blank=True,max_length=200)
例如,如果我自动为Date_mission1_equipe选择01/01/2019,Date_mission2_equipe应该为02/01/2019
答案 0 :(得分:1)
有几种方法可以解决此问题。您可以覆盖模型save
方法。也许最干净的方法是使用pre_save
信号,如下所示。
from django.db.models.signals import pre_save
def change_date(sender, instance, **kwargs):
my_object = MyModel.objects.get(id=instance.id)
if instance.Date_mission1_equipe:
a.Date_mission2_equipe = ...
pre_save.connect(change_date, sender=MyModel)
答案 1 :(得分:1)
通常建议不要在数据库中存储这样的计算值。取而代之的是在需要时执行just缩。
from datetime import timedelta
class Mission(models.Model):
date_mission1_equipe = models.DateField(null=True, blank=True)
@property
def date_mission2_equipe(self):
return self.date_mission1_equipe + timedelta(days=1)
您现在可以执行以下操作:
first_mission = Mission.objects.get(id=1)
first_mission.date_mission1_equipe
<01/01/2019>
first_mission.date_mission2_equipe
<02/01/2019>
那只是一个例子。日期可能需要根据您的需要进行格式化,并且不会自动按照我上面所述的格式输出。
此外,您在DateField上不需要max_length。此字段类型没有意义。