Django 从m2m_更改信号处理程序检测对象创建

Django 从m2m_更改信号处理程序检测对象创建,django,django-admin,Django,Django Admin,我的问题类似于其他一些关于保存对象时处理M2M字段的问题,例如。 基本上,为了使用M2M字段,您需要监听M2M\u changed,而不是post\u save 我的问题是,我希望我的操作只在创建一个新对象时发生--post\u save获得一个已创建的参数,但据我所知,m2m\u changed没有类似的情况,当触发m2m_changed信号时,对象已被保存并给出PK,因此无法从信号处理程序判断它是新创建的对象还是已更新的现有对象 这有什么办法吗 解决方法: -您可以使用post_save

我的问题类似于其他一些关于保存对象时处理M2M字段的问题,例如。

基本上,为了使用M2M字段,您需要监听
M2M\u changed
,而不是
post\u save

我的问题是,我希望我的操作只在创建一个新对象时发生--
post\u save
获得一个
已创建的
参数,但据我所知,
m2m\u changed
没有类似的情况,当触发
m2m_changed
信号时,对象已被保存并给出PK,因此无法从信号处理程序判断它是新创建的对象还是已更新的现有对象

这有什么办法吗

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

  • 可以使用“通过”功能设置连接的模型。这样,您就可以创建Django自动执行的联接表,并根据该模型执行操作
非常想知道这个用例,因为在这种情况下,您试图实现的目标可以在
post\u save
信号本身中完成。此外,m2m在操作后被特别调用(post_save、pre_save等)