更改|为Google App Engine数据存储区上的Model实例分配父级

时间:2010-06-05 11:47:38

标签: python google-app-engine transactions google-cloud-datastore

是否可以将新父级更改或分配给已存在于数据存储区中的Model实例?例如,我需要这样的东西

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

但它不起作用,因为task.parent是内置方法。我正在考虑为任务创建一个新的Key实例,但也无法更改密钥。

有什么想法吗?

1 个答案:

答案 0 :(得分:9)

根据the docs,否:

  

定义实体的父级   什么时候创建实体,而不能   稍后改变。

     

...

     

实体的完整密钥,   包括路径,种类和   名称或数字ID,是唯一的   特定于该实体。完整的   当实体是,分配密钥   在数据存储区中创建,而不是   它的部分可以改变。

当您需要在同一事务中操作父级和子级时,设置父实体非常有用。否则,您只是通过强制它们在同一个实体组中来限制性能,并限制您在创建实体后更新关系的能力。

改为使用ReferenceProperty。