[pyar] [Django] Existe equivalente a save_model pero para delete?

Dario Ocles dario.ocles en gmail.com
Lun Ago 23 09:27:25 ART 2010


Buenas gente.

Estoy buscando un equivalente a save_model pero para el delete de un
registro en el admin. El problema en cuestión es que estoy usando
ContentTypes para relacionar varios modelos distintos pero al borrar
un registro de algunos de esos modelos no me borra el registro en el
modelo que centra todo gracias a ContentTypes.

Doy un ejemplo así se entiende mejor:

Tengo un modelo ListaSecciones (que es el que centra todos) que apunta
a los siguiente 3 modelos SeccionSimple, SeccionCompleja,
SeccionSuperRara. Cuando creo un registro en cualquier de esos modelos
creo el registro equivalente en ListaSeccion por medio del método
save_model de cada uno de esos modelos.
Ahora el problema nace cuando borro uno de esos registros, no me lo
borra la relación de ListaSecciones.
Naturalmente pensé que existiría un método delete_model (equivalente a
save_model) para hacer el mismo proceso a la inversa. El tema es que
no encontré un equivalente y termine haciendo una chanchada para
lograr algo parecido.

Bueno, eso, existe un delete_model? Hay alguna forma estandar de hacer
algo como lo que quiero? Por las dudas aclaro que estoy usando Django
1.1.1

Por si sirve, les cuento que lo solucione sobre-escribiendo el método
log_deletion del ModelAdmin. Ahí me llega objeto que voy a borrar y lo
que hice fue borrar la relación de ListaSeccion y deje seguir el
proceso como se hace normalmente.

def log_deletion(self, request, object, object_repr):
    from django.contrib.contenttypes.models import ContentType
    from section.models import ListSection

    type = ContentType.objects.get_for_model(object)
    section = ListSection.objects.get(content_type__pk=type.id,
                       object_id=object.id)

    section.delete()

    super(SectionPageAdmin, self).log_deletion(request, object, object_repr)


Saludos y desde ya muchas gracias.



More information about the pyar mailing list