6

是否可以將新父項更改或分配給已存在於數據存儲中的模型實例?例如,我需要這樣的更改|爲Google App Engine數據存儲上的模型實例分配父項

task = db.get(db.Key(task_key)) 
project = db.get(db.Key(project_key)) 
task.parent = project 
task.put() 

但由於task.parent是內置的方法不以這種方式工作。我正在考慮爲該任務創建一個新的密鑰實例,但也無法更改密鑰。

有什麼想法?

回答

9

根據the docs,無:

實體的父定義 時創建的實體,並不能 稍後改變。

...

實體的完整鍵, 包括路徑,類型和 名稱或數字ID,是獨一無二的, 特定於該實體。當在數據存儲中創建的實體爲 時,會分配完整的 密鑰,並且其中的任何部分都不會更改。

當您需要在同一個事務中操作父代和子代時,設置父代實體很有用。否則,你只是通過強制它們在同一個實體組中來限制性能,並限制了在實體創建後更新關係的能力。

改爲使用ReferenceProperty。

+0

是的,看起來像我沒有選擇:)謝謝。 – 2010-06-05 17:28:27

+0

順便說一下,這裏是微博示例中父母http://www.youtube.com/watch?v=AgaL6NGpkB8的另一個好用法。 – 2010-06-05 17:37:34

相關問題