在django admin中的覆盖save()中访问更新的M2M字段

时间:2010-06-18 15:19:28

标签: django-models django-admin django-forms override

当我在admin中保存实例时,我想在模型的overriden save()方法中使用ManyToManyField的用户更新值。

事实证明,通过设计,django在调用save()之前不会更新M2M字段,但只有在save()完成后才能作为表单保存的一部分...

e.g。在两个打印命令中,显示的值是用户在admin:

中更新模型实例之前的值
class MyClass(models.Model):
    an_m2m_field = models.ManyToManyField(MyOtherCLass)
    def save(self, *args, **kwargs):
        print self.an_m2m_field.all()
        super(MyClass, self).save(*args, **kwargs) # Call the "real" save() method.
        print self.an_m2m_field.all()

如何在覆盖保存()?

中访问此字段的新值

1 个答案:

答案 0 :(得分:5)

M2M字段独立于模型保存。要对M2M字段更改进行操作,请注册到M2M字段的m2m_changed信号,详细信息为here