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

相关问题