我有一个带有 2 个ManyToMany
字段的 Django 模型。我想在每次保存模型时处理模型中的数据。
post_save
信号是在保存关系之前发送的,ManyToMany
所以我不能使用那个。然后你有m2m_changed
信号,但由于我有 2 个ManyToMany
字段,我不能确定ManyToMany
我应该在哪个字段上放置信号。
ManyToMany
是不是所有的字段都保存了之后才触发信号?
我觉得唯一的选择是在 every 之后处理数据m2m_change
,因为似乎没有映射到“此模型上的所有相关数据已完成保存”的事件或信号。
如果这是高成本,您可以异步处理处理。MyModel.needs_processing
当我遇到类似情况时,我在模型中添加了一个布尔字段来处理与处理相关的状态(例如,状态复位。
在您的情况下,如果m2m_changed
和needs_processing
是False
,您可以设置needs_processing
并True
保存模型,将其标记为由您的任务队列处理。然后,即使第二次m2m_changed
为其他 m2m 字段触发,也不会产生重复的处理成本。