我将post_save方法绑定到
django中的模型,如下面的代码:
def save_mymodel(sender,instance,*args,**kwargs):
print 'save called'
for parameter in instance.parameters.all():
print parameter.name
post_save.connect(save_mymodel, sender=MyModel)
这是我的模特:
def MyModel(models.Model):
parameters = models.ManyToManyField(Parameter)
def Parameter(models.Model):
name = models.CharField(max_length=100)
当我尝试使用任意数量的参数从django admin创建一个MyModel时,我只得到称为输出的保存.如果我再次从管理员中保存相同的MyModel对象,则会打印所有参数.在创建时调用save而在create上调用是否有什么区别?如何确保在创建时使用post_save获取模型的所有属性?
最佳答案 ManyToMany字段不参与模型save()方法,因此post_save不会识别任何m2m更改.要检测m2m变化,请使用m2m_changed信号.