无法在django中更新UpdateView中的选票日期

时间:2016-08-09 08:35:13

标签: python django

我设计了一个模型:

class Sitting(models.Model):
    sit_date = models.DateField(blank=False)
    cut_off_date = models.DateField(null=True, blank=True)
    ballot_date = models.DateField(null=True, blank=True)
    sess_no = models.ForeignKey(Session,
                                 on_delete=models.CASCADE)
    genre = TreeForeignKey('Genre', null=True, blank=True, db_index=True)

    def get_cut_off_date(self):
        return self.sit_date - timedelta(days=16)


    def save(self, *args, **kwargs):
        self.cut_off_date = self.get_cut_off_date()
        self.ballot_date = self.get_ballot_date()
        super(Sitting, self).save(*args, **kwargs)

它正确设置了ballot_date和cut_off_date。当我尝试在UpdateView中更新选票日期时,它已保存但未在数据库中进行任何更改。我也试过它在django管理面板中的结果是一样的。

enter image description here

假设我想将选票日期从8月20日更改为8月22日,我可以在表单中进行更改并保存,但是在调用时不会发现任何更改。

我相信这是

的原因
def get_ballot_date(self):
            return self.sit_date - timedelta(days=12)

任何人都可以建议我如何覆盖上述功能,以便接受以后的更改。

1 个答案:

答案 0 :(得分:1)

每次保存时都明确覆盖ballot_date和cut_off_date字段。如果你不想那样,也许你需要在那里检查一下?

def save(self, *args, **kwargs):
    if not self.cut_off_date:
        self.cut_off_date = self.get_cut_off_date()
    if not self.ballot_date:
        self.ballot_date = self.get_ballot_date()