2014-09-05 44 views
0

我的问题类似于其他一些问题,如保存对象时询问如何处理M2M字段。 Django accessing ManyToMany fields from post_save signal
Django: Using signals to save a ManyToMany field从m2m_change信号处理程序检测对象创建

基本上,为了与M2M领域的工作,你需要听m2m_changed,而不是post_save

我的问题是,我想会出现我的操作,只有当创建一个新的对象 - post_save得到一个created的说法,但据我可以告诉有没有为m2m_changed相似,由当时的m2m_changed信号被触发,对象已被保存并被赋予一个PK,所以无法从信号处理程序告知它是新创建的对象还是已更新的现有对象。

有没有办法解决这个问题?

+0

非常好奇知道这个用例,因为它可能是你想要实现的内容可以在'post_save'信号本身完成的。此外,m2m具体称为_ after_行动(post_save,pre_save等)。 – karthikr 2014-09-06 03:16:16

回答

0

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

OR

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