Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.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#U保存信号&x2B;曼尼托曼尼菲尔德:更多问题_Python_Django_Django Models - Fatal编程技术网

Python Django post#U保存信号&x2B;曼尼托曼尼菲尔德:更多问题

Python Django post#U保存信号&x2B;曼尼托曼尼菲尔德:更多问题,python,django,django-models,Python,Django,Django Models,当我尝试将处理程序连接到模型的post_save信号时,我发现此时模型的manytomy字段为空。我在谷歌上找到了一个解决方案: 解决方案是连接到模型的m2m_变化信号。 不过,我还有一些问题 如何精确检测模型实例是否已创建且未更新 答案中有一个条件: if action=='post_add'而不是reverse: 但是,当我在管理界面中编辑实例时,它似乎不起作用(当我在管理界面中单击“保存”按钮时,似乎会触动m2m字段) 我发现了一种方法,在post\u save处理程序中分配实例属性 并

当我尝试将处理程序连接到模型的post_save信号时,我发现此时模型的manytomy字段为空。我在谷歌上找到了一个解决方案: 解决方案是连接到模型的
m2m_变化信号
。
不过,我还有一些问题

如何精确检测模型实例是否已创建且未更新

答案中有一个条件:

if action=='post_add'而不是reverse:
但是,当我在管理界面中编辑实例时,它似乎不起作用(当我在管理界面中单击“保存”按钮时,似乎会触动m2m字段)

我发现了一种方法,在
post\u save
处理程序中分配实例属性 并在
m2m\u changed
处理程序中检查它

_m2m_上的定义已更改(发送方、实例、操作、反转、*args、**kwargs): 如果操作==“post_add”,而不是reverse和instance.just_创建: #做事 保存时定义(发送方、实例、已创建、*args、**kwargs): instance.just_created=已创建
但对我来说这看起来很糟糕,我不确定这是正确的方法。还有别的办法吗

如果模型中有多个m2m字段,该怎么办?

模型m2m字段的更新顺序是否明确,我们是否可以依赖它?或者我们应该连接到每个m2m_已更改的处理程序,并在实例中操作标志/计数器?顺便说一句,我们是否可以相信
m2m\u changed
是在
post\u save


是否有其他方法来处理实例及其所有m2m字段的完整保存?

我也有这个问题。显然,这是一个bug(7年前),3个月前已修复:

这可能也会让你感兴趣,在这张罚单中,一位核心开发人员说这是按预期工作的,不会修复它: