鉴于
class Category(db.Model): name = db.Stringproperty()
说我有一个嵌套的层次结构
-root |-a | |-b | |-c |-x |-y |-z1 |-z2
其中a
的父级为root
,b
的父级为a
,c
的父级为b
等。
是否有一种简单的方法可以将节点y
从x
移动到b
,以便z1
和z2
继续保持y
的子节点{1}}:
-root |-a | |-b | |-c | |-y | |-z1 | |-z2 |-x
这意味着我只需更改y
的父级。
但是,如果不可能,则需要
ny = Category(parent=b, name=y)
和y
的每个孩子递归递归,创建一个ny
作为父级的新记录y
及其子女。 答案 0 :(得分:8)
父关系在实体的密钥中编码,密钥在创建后是不可变的,因此不能更改现有实体的密钥。为此,您需要使用新密钥重新插入所有相关项目。