Django post_save在创建

时间:2016-02-05 16:39:52

标签: python django

我将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时,我只获得save called作为输出。如果我再次从管理员中保存相同的MyModel对象,则会打印所有参数。在创建时调用save而在创建时调用没有什么区别?如何确保在创建时使用post_save获取模型的所有属性?

1 个答案:

答案 0 :(得分:2)

ManyToMany字段未参与模型save()方法,因此post_save无法识别任何m2m更改。要检测m2m更改,请使用m2m_changed信号。

django doc about m2m_changed