7

我有一个带有 2 个ManyToMany字段的 Django 模型。我想在每次保存模型时处理模型中的数据。

post_save信号是在保存关系之前发送的,ManyToMany所以我不能使用那个。然后你有m2m_changed信号,但由于我有 2 个ManyToMany字段,我不能确定ManyToMany我应该在哪个字段上放置信号。

ManyToMany是不是所有的字段都保存了之后才触发信号?

4

1 回答 1

3

我觉得唯一的选择是在 every 之后处理数据m2m_change,因为似乎没有映射到“此模型上的所有相关数据已完成保存”的事件或信号。

如果这是高成本,您可以异步处理处理。MyModel.needs_processing当我遇到类似情况时,我在模型中添加了一个布尔字段来处理与处理相关的状态(例如,状态复位。

在您的情况下,如果m2m_changedneeds_processingFalse,您可以设置needs_processingTrue保存模型,将其标记为由您的任务队列处理。然后,即使第二次m2m_changed为其他 m2m 字段触发,也不会产生重复的处理成本。

于 2013-04-15T17:11:56.500 回答