estoy usando Google App Engine con Django 1.0.2 (y el django-helper) y se preguntan cómo las personas van haciendo recursiva eliminar. Suponga que tiene un modelo que es algo como esto:eliminación recursiva en Google App Engine
class Top(BaseModel): pass class Bottom(BaseModel): daddy = db.ReferenceProperty(Top)
Ahora, cuando se borra un objeto de tipo 'Top', quiero que todos los objetos 'bottom' asociados que se eliminarán también.
Como están las cosas ahora, cuando elimino un objeto 'Superior', los objetos 'Inferiores' se quedan y luego obtengo datos que no pertenecen a ningún lado. Al acceder al almacén de datos en una vista, termino con:
Caught an exception while rendering: ReferenceProperty failed to be resolved.
por supuesto que pude encontrar todos los objetos y eliminarlos, pero ya que mi modelo real es al menos 5 niveles de profundidad, estoy esperando que hay una manera para asegurarse de que esto se pueda hacer de forma automática.
He encontrado este article sobre cómo funciona con Java y eso parece ser lo que yo también quiero.
Alguien sabe cómo podría conseguir que el comportamiento en Django así?
Fuera de interés, ¿db.delete llama a delete() en cada entidad? Está optimizado diabólicamente, entonces soy un poco sospechoso de que no puedes combinar estos dos trucos. Buen punto en keys_only, though. –
No, db.delete() corresponde directamente a un solo RPC que envía todas las claves que se eliminarán en paralelo. Entity.delete() es simplemente azúcar sintáctica que llama a db.delete (self). –
¿No funcionaría 'db.delete (top.bottom_set)'? –