Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django post_save在创建时未获得多对多属性_Python_Django - Fatal编程技术网

Python Django post_save在创建时未获得多对多属性

Python Django post_save在创建时未获得多对多属性,python,django,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

我正在将
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\u save
获取模型的所有属性

manytomy
字段不参与model
save()
方法,因此
post\u save
无法识别任何m2m更改。要检测m2m变化,请使用
m2m\u变化
信号


.

是否应在创建时调用
m2m\u changed
?我将我的代码从
post_save
更改为
m2m_changed
,但该函数在创建时甚至没有以这种方式调用。不,这是一个单独的信号。但无论如何,您都不会在
save()
上添加
m2m
字段,对吗?当我使用django admin创建对象时,有没有办法获取m2m属性并对其进行一些操作?为什么不能使用
m2m\u changed
?当你保存m2m时,信号会被触发。不管怎样,我传递了错误的发送者。它应该是
MyModel.attributes.through
Try
m2m\u changed.connect(save\u MyModel,sender=MyModel.parameters.through)