我正在将 post_save
方法绑定(bind)到 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
时,我只得到 save called
作为输出。如果我再次从管理员那里保存相同的 MyModel
对象,则会打印所有参数。在创建时调用 save
与不在创建时调用有什么区别?如何确保在创建模型时使用 post_save
获取模型的所有属性?
最佳答案
ManyToMany
字段不参与模型 save()
方法,因此 post_save
不会识别任何 m2m 更改。要检测 m2m 变化,请使用 m2m_changed
信号。
关于python - Django post_save 在创建时没有获得多对多属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35229184/