2012-01-05 55 views
1

當主外鍵更新時,Django是否自動更新子記錄?它可以被禁用。當主外鍵更新時,Django是否自動更新子記錄?

我可以看到一個on.delete函數,但不是在Django文檔中的on.update函數。

/vfclistsGUY

+1

在這種情況下,您看到哪些子記錄需要更新?你能舉出一個更具體的例子嗎(關鍵是,我不確定孩子是否需要更新) – second 2012-01-05 15:11:36

+0

@second即使主記錄沒有直接鏈接到子記錄表格,我仍然需要更新子記錄if主密鑰更改。從下面收到的答案看來,Django不支持這個 – vfclists 2012-01-05 16:23:41

+0

爲什麼主密鑰會更改?這絕不應該發生。 – 2012-01-05 16:39:02

回答

1

,除非你告訴它Django不觸碰孩子的。即使在DELETE CASCADE的情況下,這也是數據庫級別的強制執行,而不是Django。

如果您在爲子對象使用嵌入式框架以及主對象的表單(或者在管理...同一事物中使用內聯),那麼Django也會更新子框架如果有任何更改。否則,不,Django什麼都不做。

如果您需要在保存時更新孩子,您應該覆蓋您的模型的save方法,以便爲孩子做任何需要的操作或使用post_save信號。

+1

這是正確的,不同之處在於刪除級聯*由Django在Python級別執行,而與數據庫約束無關。 – 2012-01-05 15:51:07