Django:如何更改一个字段的值?

时间:2019-01-07 15:15:58

标签: django python-2.7 django-models

我在模型中有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

2 个答案:

答案 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。此字段类型没有意义。