[pyar] [django] Duda con signals y m2m

Varela Matias matu.varela en gmail.com
Mie Oct 12 08:46:05 ART 2016


@Juan, pinta lindo, pero no viene las 'areas' seleccionadas en el kwargs
del save. Creo que el save no es el lugar para ejecutar la notificación ya
que no tengo "todo" guardado (respecto a las m2m)

@Daniel
"-si puede NO tener relaciones mediante ese m2m ¿cómo se relacionarían para
hacer algo con él? (o si es en el modelo "padre" ¿no te sirve el
post_save?)"
El post_save no sirve porque en ese momento, "no sé" si seleccionó o no
algún 'área' (el modelo m2m), y por lo tanto no puedo llamar al método
porque me falta información. ¿me explico? Ese método (una notificación)
TIENE que saber si se seleccionaron áreas o no.

"-Si las tiene -las crea- ¿porqué no se dispara m2m_changed?"
Si se dispara cuando se han seleccionado elementos relacionados m2m, el
problema es cuando NO se ha hecho, ya que igualmente se debe ejecutar ese
método.

@Ezequiel esto es lo que terminé haciendo ayer, pero como bien decis, no
estoy convencido de que sea la mejor opción.

Basicamente, busco la respuesta a:
Ok django, necesito que me avises cuando hayas guardado el modelo, sus
relaciones y TODO, así hago esto que necesito hacer!

Saludos

El mié., 12 oct. 2016 a las 7:41, Ezequiel Golub (<ezequiel.golub en gmail.com>)
escribió:

Lo que hice para un proyecto chico es tener una tarea en celery con
countdown de 30 segundos, disparada por el post_save. Es medio sucio, y si
fuera a tener mucho tráfico cada formulario seguro voy a tener problemas
pero necesitaba solucionarlo rápido. Lo que hace esto es demorar la
ejecución por 30 segundos, lo cual le da tiempo a Django de terminar de
guardar todo, entonces vos volves a interrogar la bbdd para ver el nuevo
estado y ahí decidís que hacer. También podes hookear el pre_save, guardar
el estado anterior y pasárselo al task de celery para poder inspeccionar
los cambios.
Lo use para mandar un resumen de "usuarios asignados y desafinados" a
cierto proyecto.

Abz

Eze
El El mar, 11 de oct. de 2016 a las 16:27, Daniel <dmlistapython en gmail.com>
escribió:


Buenas, tengo este problema:

Necesito llamar a un método de un modelo de django luego de que este se
guarda. Este modelo tiene un m2m a otro, por lo que bindee al signal
m2m_changed para que se ejecute ese método (el post_save no me sirve porque
aún no tiene las relaciones m2m guardadas)

El tema es que puede no tener relaciones mediente ese m2m, por lo que ese
signal nunca se dispara.

Se me ocurrió añadir un task en celery para que ejecute ese método luego de
que todo está guardado, y creo que funcionaría, pero quizás habia alguna
forma de hacer esto sin celery.

¿Hay manera de llamar a un método luego de que TODO es salvado en la db?
¿se les ocurre otra forma más "djangera" de hacer esto?

Saludos y gracias de antemano


No termino de entender el problema
-si puede NO tener relaciones mediante ese m2m ¿cómo se relacionarían para
hacer algo con él? (o si es en el modelo "padre" ¿no te sirve el post_save?)
-Si las tiene -las crea- ¿porqué no se dispara m2m_changed?


_______________________________________________
pyar mailing list pyar en python.org.ar
http://listas.python.org.ar/listinfo/pyar

PyAr - Python Argentina - Sitio web: http://www.python.org.ar/

La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
Argentina - http://www.usla.org.ar

_______________________________________________
pyar mailing list pyar en python.org.ar
http://listas.python.org.ar/listinfo/pyar

PyAr - Python Argentina - Sitio web: http://www.python.org.ar/

La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
Argentina - http://www.usla.org.ar
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20161012/5fe58213/attachment-0001.html>


Más información sobre la lista de distribución pyar