用于post_add操作的m2m_changed信号中的pk_set包含所有相关项

时间:2013-10-03 16:39:12

标签: django django-models django-signals django-orm

当更新模型的ManyToMany字段并发送m2m_changed信号时,我在pk_set参数中获取该关系的所有项目以前相关的项目和新项目。这是正确的行为吗?我期待只有新项目或添加到关系中的多个项目才会出现在pk_set中。

如果这是预期的行为,除了使用post_add信号并比较已经与模型关联的项目列表之外,是否有更好的方法只将项添加到关系中传入列表?

编辑:在pre_add中看来没有与ManyToMany字段相关的项目,那么post_add上的所有项目都在那里。

编辑2:好的,所以在添加项目列表之前,许多关系都会被清除,接收pre_clear和post_clear操作。不知道我应该如何区分项目集的变化。

1 个答案:

答案 0 :(得分:0)

在save_model()模型管理员中进行比较似乎是一个更好的选择。在那里,我可以获得原始对象和正在应用的表单。