2010-06-18 91 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