有没有一种简单的方法来更改谷歌应用引擎数据库中记录的父级

时间:2009-04-30 18:48:09

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

鉴于

class Category(db.Model):
   name = db.Stringproperty()

说我有一个嵌套的层次结构

-root
 |-a
 | |-b
 |   |-c
 |-x
   |-y
     |-z1
     |-z2

其中a的父级为rootb的父级为ac的父级为b等。

是否有一种简单的方法可以将节点yx移动到b,以便z1z2继续保持y的子节点{1}}:

-root
 |-a
 | |-b
 |   |-c
 |   |-y
 |     |-z1
 |     |-z2
 |-x

这意味着我只需更改y的父级。

但是,如果不可能,则需要

  1. 创建新记录ny = Category(parent=b, name=y)
  2. y的每个孩子递归递归,创建一个ny作为父级的新记录
  3. 而不是删除y及其子女。

1 个答案:

答案 0 :(得分:8)

父关系在实体的密钥中编码,密钥在创建后是不可变的,因此不能更改现有实体的密钥。为此,您需要使用新密钥重新插入所有相关项目。