我们假设我们有一个视图 ItemAdmin 和一个表单 ItemAdminForm 。在此管理页面上,我希望能够单击按钮以通知已注册的所有用户,以了解项目何时可供下载。我的模型如下:
class PreregisteredUser(models.Model):
item = models.ForeignKey(Item, related_name='preregistered_users')
user = models.ForeignKey(User, related_name='preregistrations')
date_registered = models.DateTimeField(auto_now_add=True)
notified = models.BooleanField(default=False)
class Meta:
unique_together = 'item', 'user'
在提交时,我希望逻辑类似于以下内容:
因此,在表单的 save 方法中,我做(1)和(2)。对于(3)我使用:
PreregisteredUser.objects.filter(item=item).update(notified=True)
问题是,当页面重新加载时,所有用户仍被标记为未被通知。所以我不知道这是不是生效了,或者它是否生效,但由于盒子没有手动检查,它会覆盖我试图用它做的改变。更新
所以问题是,如何覆盖表单的输入以使更新生效?这是否属于 save 方法旁边的其他位置?这是否需要使用 post_save ?任何想法都会有所帮助。
答案 0 :(得分:0)
我认为你最好的选择是使用pre_save()
并在那里添加你的逻辑。这样,当您的页面加载时,它会加载您操作的数据。