Esiste un modo semplice per modificare il genitore di un record nel datstore del motore di app di Google
-
03-07-2019 - |
Domanda
Data ??p>
class Category(db.Model): name = db.Stringproperty()
Dire che ho una gerarchia nidificata
-root |-a | |-b | |-c |-x |-y |-z1 |-z2
dove il genitore di a
è root
, il genitore di b
è a
, c Il genitore di
è b
ecc.
Esiste un modo semplice per spostare il nodo y
da x
a b
in modo tale che z1
e z2
continuano a rimanere figli di y
:
-root |-a | |-b | |-c | |-y | |-z1 | |-z2 |-x
Ciò significherebbe semplicemente cambiare il genitore di y
.
Tuttavia, se ciò non fosse possibile di quanto richiederebbe
- creazione di un nuovo record
ny = Categoria (parent = b, name = y)
e - ricorsivamente per ogni figlio di
y
creando un nuovo record che hany
come genitore e - rispetto all'eliminazione di
y
e dei suoi figli.
Soluzione
La relazione principale è codificata nella chiave di un'entità e la chiave è immutabile una volta creata, quindi no, non è possibile modificare la chiave di un'entità esistente. Per fare ciò, è necessario reinserire tutti gli elementi pertinenti con nuove chiavi.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow