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

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 От x Для 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