2014-09-05 54 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自動執行的連接表,並根據該模型執行操作。