¿Existe una manera fácil de cambiar el padre de un registro en el almacén de datos del motor de aplicaciones de Google?
-
03-07-2019 - |
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
- creando un nuevo registro
ny = Categoría (parent = b, name = y)
y - recursivamente para cada hijo de
y
creando un nuevo registro que tieneny
como padre y - que eliminar
y
y sus hijos.
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