有没有一种简单的方法来更改谷歌应用引擎数据库中记录的父级
-
03-07-2019 - |
题
鉴于
class Category(db.Model): name = db.Stringproperty()
说我有一个嵌套的层次结构
-root |-a | |-b | |-c |-x |-y |-z1 |-z2
其中 a
的父级是 root
, b
的父级是 a
, c
的父级是 b
等。
是否有一种简单的方法可以将 x
中的节点 y
移动到 b
,以便 z1
并且 z2
仍然是 y
的孩子:
-root |-a | |-b | |-c | |-y | |-z1 | |-z2 |-x
这意味着我只需更改 y
的父级。
但是,如果不可能,则需要
- 创建新记录
ny = Category(parent = b,name = y)
和 - 以递归方式为
y
的每个子项创建一条新记录,其中ny
为父项 - 而不是删除
y
及其子代。
醇>
解决方案
父关系在实体的密钥中编码,密钥在创建后是不可变的,因此不能更改现有实体的密钥。为此,您需要使用新密钥重新插入所有相关项目。
不隶属于 StackOverflow