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

Vla*_*kov 6 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()
Run Code Online (Sandbox Code Playgroud)

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

有什么想法吗?

Dre*_*ars 9

根据文件,没有:

实体的父级是在创建实体时定义的,以后不能更改.

...

实体的完整密钥(包括路径,种类和名称或数字ID)是唯一且特定于该实体的.在数据存储区中创建实体时会分配完整密钥,并且其任何部分都不能更改.

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

请改用ReferenceProperty.