Django Signals

164 views
Skip to first unread message

tony

unread,
Jan 30, 2012, 2:31:43 PM1/30/12
to Django-es
Hola.

Para que se utilizariamos Django-Signals, y si alguien tiene algun
ejemplo.

Saludos.


Antonio.

Jesús Espino

unread,
Jan 31, 2012, 3:49:49 AM1/31/12
to djan...@googlegroups.com
Las señales se utilizan para realizar acciones cuando se da un evento.
Normalmente post_save, post_delete, de objetos de tu base de datos. Es
decir, puedes decirle que cada vez que se borre un objeto, o que se
guarde un objeto ejecute una funcion.

Esto es util para recalcular algun tipo de dato agregado cuando
guardas, o notificar por email, o actualizar sistema de indexado
externo... Tiene miles de aplicaciones posibles, pero simplemente es
"Cuando se dé el evento X, ejecuta esta función".

Un saludo.

2012/1/30 tony <sasys...@gmail.com>:

> --
> Ha recibido este mensaje porque está suscrito a Grupo "Grupo de Usuarios del Framework Django de habla hispana" de Grupos de Google.
>  Si quieres publicar en este grupo, envía un mensaje de correo
> electrónico a djan...@googlegroups.com
>  Para anular la suscripción a este grupo, envíe un mensaje a django-es-...@googlegroups.com
>  Para obtener más opciones, visita este grupo en http://groups.google.com.bo/group/django-es.

Antonio Samper

unread,
Jan 31, 2012, 10:49:09 AM1/31/12
to djan...@googlegroups.com
Ok, Jesús, muchas gracias por tu valioso aporte.

Saludos

Javier Roa Benitez

unread,
Jan 31, 2012, 11:40:25 AM1/31/12
to djan...@googlegroups.com
Buenas Tardes:
Particularmente lo uso para LOGs de archivos que quiero controlar las acciones sobre sus registros (ALTAS/BAJAS/MODIFICACIONES), de manera que cuando ocurra uno de estos casos los guardo en una tabla incluyendo la fecha,hora y usuario. 
Esto lo hice a fin de tener una pista de auditoria, tenia otras opciones como poner trigers en la base de datos, pero de esta menera perdia la pocibilidad de aprovechar el MODELO para generar mi sistema en otros motores (diferentes al de POstgres - donde esta actualmente mi sistema)
Vere si puedo aislar las funciones que programe para ello y la estructura de las tablas donde los guardo y asi compartir con Uds.
Saludos 
Javier
Lic. Javier Roa Benitez
Analista de Sistemas
Consultor Informatico

Antonio Samper

unread,
Jan 31, 2012, 2:10:43 PM1/31/12
to djan...@googlegroups.com
Hola Javier, Interesante, si seria bueno si pudieras postear un ejemplo, para tener mayor claridad de como podemos aplicar esta parte interesante de django.

Gracias

Antonio

Javier Roa Benitez

unread,
Jan 31, 2012, 2:46:04 PM1/31/12
to djan...@googlegroups.com
Buenas Tardes:
Aqui envio unos archivos que tal vez sirvan para tomar como ejemplo:
1-models_ejmplo.py : Contiene el modelo donde defino la tabla a loguear y la tabla donde guardo el valor logueado , mas el usuario, fecha y hora, tipo de accion (DEL/CHG), el campo clave de la tabla (cuando tiene "id" significa una tabla con clave asignada automaticamente por Django), el valor de la clave en caso de "id" el id de registro
2- signals_log.py : contiene las funciones que m permiten loguear y lsa tablas que quiero loguear
3-La carpeta midlware donde esta una funcion que me permite en la mayoria de los casos obener el usuario
4- Dos tablas en csv resultados del logueo. Yo lo hago simple guardo en un formato de diccionario los valores de la tabla
Espero sirva de algo, se que se puede perfeccionar pero creo que es un buen comienzo, a mi me costo mucho llegar a este resultado
Saludos 
Javier
django_signals_save.rar

Antonio Samper

unread,
Feb 1, 2012, 7:18:48 PM2/1/12
to djan...@googlegroups.com
Gracias Javier, Excelente aporte.

Saludos.

rikuth...@gmail.com

unread,
Jan 30, 2012, 2:39:38 PM1/30/12
to djan...@googlegroups.com
Buenas,

Las señales de Django (son varias, perfectamente documentadas [1]) se utilizan para cuando quieres hacer algún tipo de comprobación previa a guardar el objeto en base de datos (en el pre_save) o modificación de algún campo a posteriori. También te puede valer para notificaciones o cosas así.

Por ejemplo, puedes mirar en este pequeño sistema de blogging como en una señal post_save se almacena la fecha de publicación de una entrada [2]. Ten cuidado porque si haces un save dentro de un post_save, si no lo controlas puedes entrar en un bucle infinito :-)

Un saludo.

--
Ha recibido este mensaje porque está suscrito a Grupo "Grupo de Usuarios del Framework Django de habla hispana" de Grupos de Google.
 Si quieres publicar en este grupo, envía un mensaje de correo
electrónico a djan...@googlegroups.com
 Para anular la suscripción a este grupo, envíe un mensaje a django-es-...@googlegroups.com
 Para obtener más opciones, visita este grupo en http://groups.google.com.bo/group/django-es.



--
Pablo Recio Quijano

Reply all
Reply to author
Forward
0 new messages