鉴于

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 的父级。

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

  1. 创建新记录 ny = Category(parent = b,name = y)
  2. 以递归方式为 y 的每个子项创建一条新记录,其中 ny 为父项
  3. 而不是删除 y 及其子代。
有帮助吗?

解决方案

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top