Есть ли простой способ изменить родительский элемент записи в Google App engine datstore
-
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