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

Dario Ocles dario.ocles en gmail.com
Mie Ago 25 17:02:14 ART 2010


El día 25 de agosto de 2010 15:20, Dario Ocles <dario.ocles en gmail.com> escribió:
> Muchas gracias por las respuestas, al final ya lo solucione con signals.
>
> Ahora me surge una duda más.
>
> Todos los modelos que necesito implementar esto extienden de un
> "modelo abstracto" ya que comparten muchos datos (al modelo del que
> extienden le agregue el class Meta: abstract = True ). Intente
> conectar la señal post_save y post_delete a este modelo pero no anda,
> asi que tuve que ir modelo por modelo conectando las dos señales con
> el mismo handler para cada una.
>
> No hay forma de conectar las señales a este modelo base? Así me ahorro
> de repetir el mismo bloque de código que conecta las señales a cada
> modelo y me despreocupo si alguien en el futuro agrega una nueva
> sección y se olvida de conectar las señales.
>
> Saludos y muchas gracias.
>

Bueno, me contesto a mi mismo.

Lo que hice fue conectar todas las señales de post_save y post_delete
a los handler correspondientes. Dentro del handler para saber cuales
son las que me interesa puse un if preguntando si es o no una subclase
del modelo que me interesaba atrapar.


from django.db.models.signals import post_save, post_delete

def handler_post_delete(sender, instance, *args, **kwargs):
    if not issubclass(sender, Page):
        return

        #Codigo de borrar la seccion de la lista de secciones

post_delete.connect(handler_post_delete)

def handler_post_save(sender, instance, created, *args, **kwargs):
    if not issubclass(sender, Page):
        return

    #Codigo de agregar a la lista de secciones

post_save.connect(handler_post_save)


Saludos.



More information about the pyar mailing list