从m2m_change信号处理程序检测对象创建

时间:2014-09-05 23:21:14

标签: django django-admin

我的问题类似于在保存对象时询问有关处理M2M字段的其他一些问题,例如。 Django accessing ManyToMany fields from post_save signal
Django: Using signals to save a ManyToMany field

基本上,为了使用M2M字段,您需要倾听m2m_changed而不是post_save

我遇到的问题是,我希望仅在创建新对象时才会发生我的操作 - post_save获得created参数,但就我而言告诉我m2m_changed没什么相似之处,当m2m_changed信号被触发时,对象已被保存并被赋予PK,所以没有办法告诉信号处理程序它是否是新创建的对象或已更新的现有对象。

这有什么办法吗?

1 个答案:

答案 0 :(得分:0)

解决方法: - 您可以将post_save方法与分配给模型的变量一起使用。例如,您可以在创建对象时将变量设置为“created”。然后,您可以告诉模型,只有在将该变量设置为创建时才能执行某些操作。执行操作后,您可以将该变量设置为“已更新”。然后操作将不会在处理程序中触发。

OR

  • 您可以使用“通过”功能设置已连接的模型。这样你就可以创建Django自动执行的连接表,并根据该模型执行操作。