¿Existe una manera fácil de cambiar el padre de un registro en el almacén de datos del motor de aplicaciones de Google?

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

Pregunta

Dado

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

Diga que tengo una jerarquía anidada

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

donde el padre de a es root , b es el padre de a , c El padre de es b etc.

¿Existe una forma sencilla por la cual podría mover el nodo y de x a b de modo que z1 y z2 continúan siendo hijos de y :

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

Eso significaría que simplemente cambio el padre de y .

Sin embargo, si eso no es posible, requeriría

  1. creando un nuevo registro ny = Categoría (parent = b, name = y) y
  2. recursivamente para cada hijo de y creando un nuevo registro que tiene ny como padre y
  3. que eliminar y y sus hijos.
¿Fue útil?

Solución

La relación principal se codifica en la clave de una entidad, y la clave es inmutable una vez creada, por lo que no, no puede cambiar la clave de una entidad existente. Para hacerlo, debe volver a insertar todos los elementos relevantes con nuevas claves.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top