Ich benutze Google App-Engine mit Django 1.0.2 (und der Django-Helfer) und frage mich, wie Menschen rekursive löschen gehen. Angenommen, Sie haben ein Modell, das so etwas wie dieses ist:Rekursives Löschen in Google App-Engine
class Top(BaseModel): pass class Bottom(BaseModel): daddy = db.ReferenceProperty(Top)
Nun, wenn ich ein Objekt vom Typ ‚Top‘ löschen, ich will alle zugehörigen ‚Bottom‘ Objekte ebenfalls gelöscht werden.
Wie jetzt, wenn ich ein "Top" -Objekt lösche, bleiben die "Bottom" -Objekte und dann bekomme ich Daten, die nirgends hingehören. Wenn Sie den Datenspeicher in einer Ansicht zugreifen, ich am Ende mit:
Caught an exception while rendering: ReferenceProperty failed to be resolved.
ich natürlich alle Objekte finden konnten, und löschen Sie sie, aber da mein wirkliches Modell mindestens 5 Ebenen tief ist, ich bin der Hoffnung, einen Weg, es gibt um sicherzustellen, dass dies automatisch durchgeführt werden kann.
Ich habe diese article darüber gefunden, wie es mit Java funktioniert und das scheint ziemlich genau das zu sein, was ich auch will.
Wer weiß, wie ich dieses Verhalten auch im Django bekommen könnte?
Interessanterweise ruft db.delete delete() für jede Entität auf? Es ist teuflisch optimiert, daher bin ich etwas misstrauisch, dass man diese beiden Tricks nicht kombinieren kann. Guter Punkt nur auf keys_only. –
Nein, db.delete() entspricht direkt einem einzelnen RPC, der alle zu löschenden Schlüssel parallel sendet. Entity.delete() ist einfach syntaktischer Zucker, der db.delete (self) aufruft. –
Würde 'db.delete (top.bottom_set)' nicht gut funktionieren? –