Есть ли простой способ изменить родителя записи в Google app engine datstore

дано

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

скажем, у меня есть вложенная иерархия

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

здесь a'родитель ы root, b'родитель ы a, c'родитель ы b etc.

есть ли простой способ, которым я мог бы переместить узел y С x to 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 и ее детей.

1 ответов


родительское отношение закодировано в ключе сущности, и ключ неизменяем после создания, поэтому нет, вы не можете изменить ключ существующей сущности. Для этого необходимо заново вставить все соответствующие элементы с новыми ключами.