2010-06-18 53 views
2

我想在保存admin中的实例时使用模型的overriden save()方法中的ManyToManyField的用户更新值。访问更新后的M2M字段保存()在Django的管理员

事实证明,通过设计,Django不调用save()之前更新M2M领域,但只有在保存()完成的形式节省的一部分......

例如在这两个打印命令娄显示的值是用户更新管理模型实例之前:

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() 

我如何可以访问此字段的新值的覆盖保存()?

回答

5

M2M字段是独立于模型保存的。为了对M2M字段变化起作用,请注册到M2M字段的m2m_changed信号,详见here