Google App Engineのデータストアでレコードの親を変更する簡単な方法はありますか

StackOverflow https://stackoverflow.com/questions/808476

質問

与えられた

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

入れ子になった階層があるとします

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

どこ aの親は root, bの親は a, cの親は b

ノードを移動する簡単な方法はありますか y から xb そのような 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