Python Django post#U保存信号&x2B;曼尼托曼尼菲尔德:更多问题
当我尝试将处理程序连接到模型的post_save信号时,我发现此时模型的manytomy字段为空。我在谷歌上找到了一个解决方案: 解决方案是连接到模型的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处理程序中分配实例属性 并
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个月前已修复:
这可能也会让你感兴趣,在这张罚单中,一位核心开发人员说这是按预期工作的,不会修复它: