Google App Engineのデータストアでレコードの親を変更する簡単な方法はありますか
-
03-07-2019 - |
質問
与えられた
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
:
-root |-a | |-b | |-c | |-y | |-z1 | |-z2 |-x
それは単に私が変わることを意味します y
の親。
ただし、それが不可能な場合は、必要以上に
- 新しいレコードを作成する
ny = Category(parent=b, name=y)
そして - の子ごとに再帰的に
y
新しいレコードを作成するny
親として、そして - 削除するよりも
y
そしてその子供たち。
解決
親関係はエンティティのキーにエンコードされており、キーは一度作成されると不変であるため、既存のエンティティのキーを変更することはできません。これを行うには、関連するすべての項目を新しいキーで再挿入する必要があります。
所属していません StackOverflow