2009-04-30 17 views
6

BiorącCzy istnieje prosty sposób na zmianę rodzica rekord w google datstore App Engine

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

że mam zagnieżdżonych hierarchii

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

gdzie a „s rodzic jest root, b Jego rodzicem jest a, c, rodzicem jest b itd.

Czy istnieje prosty sposób przez wh Ich mogę przenieść węzeł y z x do b takie, że z1 i z2 nadal pozostają dzieci z y:

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

Oznaczałoby to po prostu zmienić y „s rodzica.

Jednakże, jeśli nie jest to możliwe, niż wymagałoby

  1. tworzenia nowego rekordu ny = Category(parent=b, name=y) i
  2. rekurencyjnie dla każdego dziecka y tworzenia nowego rekordu, który ma ny jako rodzica i
  3. niż usuwanie y i jego potomków.
+0

Dobre pytanie +1. Czy ktoś mógłby edytować pytanie, aby poprawnie sformatować kod w drugim akapicie? Dzięki. – JasonSmith

Odpowiedz

6

Relacja rodzica jest zakodowana w kluczu jednostki, a klucz jest niezmienny po utworzeniu, więc nie, nie można zmienić klucza istniejącej jednostki. W tym celu należy ponownie wstawić wszystkie istotne elementy za pomocą nowych kluczy.