0
假设我们有一个视图ItemAdmin和一个表格ItemAdminForm。在这个管理页面上,我希望能够点击一个按钮来通知已经注册的所有用户,以便知道何时可以下载项目。我对这个模型如下:用Django表单覆盖POST数据的正确方法是什么?
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'
在提交时,我想的逻辑是类似以下内容:
- 如果被点击notify_users,找到所有预登记的用户谁现在还没有收到通知。
- 通知这些用户。
- 将这些用户更新为已收到通知。
所以在保存方法的形式,我做(1)和(2)。对于(3)我使用:
PreregisteredUser.objects.filter(item=item).update(notified=True)
问题是,当页面重新加载,所有的用户都仍然标记为未收到通知。所以我不知道这只是没有生效,或者它可能正在生效,但是由于这些框未被手动检查,它正在覆盖我正在尝试更新的更改。
所以问题是,我如何覆盖窗体的输入,使更新生效?这是否属于除保存方法之外的其他地方?这是否需要使用post_save?任何想法都会有帮助。