我设计了一个模型:
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管理面板中的结果是一样的。
假设我想将选票日期从8月20日更改为8月22日,我可以在表单中进行更改并保存,但是在调用时不会发现任何更改。
我相信这是
的原因def get_ballot_date(self):
return self.sit_date - timedelta(days=12)
任何人都可以建议我如何覆盖上述功能,以便接受以后的更改。
答案 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()