Utilizzo il motore di app di google con django 1.0.2 (e l'helper di django) e mi chiedo come le persone eseguano l'eliminazione ricorsiva. Supponiamo di avere un modello che è qualcosa di simile:Eliminazione ricorsiva nel motore di app di google
class Top(BaseModel): pass class Bottom(BaseModel): daddy = db.ReferenceProperty(Top)
Ora, quando elimino un oggetto di tipo 'Top', voglio tutti gli oggetti 'bottom' associati da eliminare pure.
Come ora, quando elimino un oggetto "Top", gli oggetti "Bottom" rimangono e quindi ottengo dati che non appartengono a nessun luogo. Quando si accede al datastore in una vista, io alla fine con:
Caught an exception while rendering: ReferenceProperty failed to be resolved.
ho potuto ovviamente trovare tutti gli oggetti ed eliminarli, ma dato che il mio vero e proprio modello è di almeno 5 livelli di profondità, spero ci sia un modo per assicurarsi che questo possa essere fatto automaticamente.
Ho trovato questo article su come funziona con Java e sembra essere più o meno quello che voglio.
Qualcuno sa come potrei ottenere quel comportamento anche in django?
Fuori interesse, db.delete chiama delete() su ciascuna entità? È diabolicamente ottimizzato, quindi sono un po 'sospettoso che non sia possibile combinare questi due trucchi. Buon punto su keys_only, però. –
No, db.delete() corrisponde direttamente a un singolo RPC che invia tutte le chiavi da eliminare in parallelo. Entity.delete() è semplicemente zucchero sintattico che chiama db.delete (self). –
Non 'db.delete (top.bottom_set)' funziona bene? –