在Google App Engine Datastore中更改/分配模型实例的父级
有没有办法改变已经在数据库里的模型实例的父级?比如我想做这样的事情:
task = db.get(db.Key(task_key))
project = db.get(db.Key(project_key))
task.parent = project
task.put()
但是这样做不行,因为 task.parent
是一个内置的方法。我在考虑为这个任务创建一个新的键(Key)实例,但也没有办法去改变这个键。
有什么想法吗?
1 个回答
9
根据文档,答案是否定的:
一个实体的父级是在创建这个实体的时候就定义好的,之后是不能更改的。
...
一个实体的完整键,包括路径、类型和名称或数字ID,是唯一且特定于这个实体的。这个完整键是在实体被创建到数据存储时分配的,之后它的任何部分都不能改变。
设置父实体在你需要在同一个事务中处理父子关系时是有用的。否则,你只是通过强制它们都在同一个实体组中来限制性能,并且在实体创建后无法更新它们之间的关系。
建议使用ReferenceProperty来代替。