[pyar] DjangoPregunta! Al post_save signal de django no le creo nada :P

Daniel Moisset dmoisset en machinalis.com
Mar Jul 26 17:43:28 ART 2011


2011/7/26 Emiliano Dalla Verde Marcozzi <edvm en airtrack.com.ar>

> El 26 de julio de 2011 16:59, Emiliano Dalla Verde Marcozzi <
> edvm en airtrack.com.ar> escribió:
>
> Buenas querida lista!
>>
>> Les comento, tengo la siguiente clase en mi models.py:
>>
>> class Incidencia(models.Model):
>>
>>  (...)
>>
>> notificar_a_usuarios = models.ManyToManyField(User, blank=True, null=True,
>> @receiver(post_save)
>>
>> def notify_by_email(sender, **kwargs):
>>
>>  if not sender in [Incidencia]:
>>
>> return
>>
>>
Hola,
   lo que esta pasando es que agregar usuarios no hace save() sobre una
incidencia

Cuando creas la incidencia por primera vez en el admin, se hace lo siguiente

1) Se crea la Incidencia, sin usuarios asociados, y se guarda con save()
(esto dispara la signal que capturas)
2) Se crean las asociaciones con usuarios (filas en la relacion auxiliar
para la ManyToMany), haciendosele save a cada una de estas filas

Fijate que el primer save() si o si django tiene que hacerlo antes de
asociar usuarios; sino tu Incidencia no tiene clave primaria, con la cual no
la podes asociar a otra cosa en un manytomany

Ademas fijate que agregar cosas a una ManyToMany crea filas en una tabla
auxiliar, con lo cual las modificaciones que hagas en un manytomany son
independientes del save()

Dicho esto, lo que te sugeriria es: hace que la M2M pase por un modelo
auxiliar (through=...), y captura la señal de post_save de ese modelo
auxiliar.

 Saludos,
  D.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20110726/38eb0d8e/attachment.html>


More information about the pyar mailing list