我正在使用谷歌應用程序引擎與Django的1.0.2(和Django的幫手),並想知道人們如何去做遞歸刪除。 假設你有一個模型,它是這樣的:谷歌應用程序引擎中的遞歸刪除
class Top(BaseModel): pass class Bottom(BaseModel): daddy = db.ReferenceProperty(Top)
現在,當我刪除類型「頂」的目標,我希望所有的相關的「底部」的對象被刪除。
就像現在的情況一樣,當我刪除'Top'對象時,'Bottom'對象保留,然後我得到的數據不屬於任何地方。當在一個視圖訪問的數據存儲,我結束了:
Caught an exception while rendering: ReferenceProperty failed to be resolved.
當然我能找到的所有對象並將其刪除,但因爲我的真實模型至少爲5級深,我希望有辦法確保這可以自動完成。
我發現這個article關於它如何與Java協同工作,這似乎是我想要的。
任何人都知道我該如何在django中獲得該行爲?
出於興趣,db.delete對每個實體調用delete()嗎?這是惡魔般的優化,所以我有點懷疑你不能把這兩個技巧結合起來。儘管如此,key_only上的好點。 – 2009-07-02 23:16:40
不,db.delete()直接對應於一個發送所有要並行刪除的密鑰的RPC。 Entity.delete()只是調用db.delete(self)的語法糖。 – 2009-07-03 11:09:52