【发布时间】:2016-02-22 14:05:44
【问题描述】:
在我的模型中,我有一个 ManyToManyField 而不是另一个模型:
class A(models.Model):
...
class B(models.Model):
field = models.ManyToManyField(A)
假设我用一些值对field 进行了更新,我试图获取用户在点击Save 按钮之前取消选择的项目的列表。为此,我在B 中重载了save() 方法:
def save(self, *args, **kwargs):
super(B, self).save(*args, **kwargs)
print self.field.all()
但是,当点击Save 按钮时,我得到的self.field.all() 的值是我加载表单时的值。
例如,如果我在列表中有两个选定的项目(a 和 b)并且我取消选择 b 并点击 Save 按钮,self.field.all() save() 时间仍然是 @987654336 @ 和 b。如果我再次编辑该项目,我会看到 b 未选中,我将其选择回来,在 save() 时间 self.field.all() 仅是 a。
我的假设是在 save() 方法之后处理未选择的项目,尽管我在 Django 文档中没有找到参考。
有没有办法在save() 时间获取更新的列表?如果没有,是否有可以重载的方法来处理模型定义中的列表更新?
(注意:也欢迎替代品。)
【问题讨论】:
标签: python django django-models