Adjunto un método a la señal post_save de mi modelo Django. De esta forma, puedo borrar algunos elementos en caché siempre que se modifique el modelo.¿Por qué se sube post_save dos veces durante el guardado de un modelo de Django?
El problema que tengo es que la señal se activa dos veces cuando se guarda el modelo. No necesariamente duele nada (el código simplemente se equivocará) pero no puede ser correcto.
Un ejemplo rápido, simplemente imprimir el modelo a la consola (utilizando el servidor dev):
from blog.models import Post
from django.db.models import signals
def purge_cache(sender, **kwargs):
print 'Purging %s' % sender
signals.post_save.connect(purge_cache, sender=Post)
Esto es usando el establo 1.1.1 liberación de Django.
información actualizada:
Con la retroalimentación de los comentarios de todos, he modificado mi pregunta porque el tema está descubriendo ahora por qué el post_save está siendo disparado dos veces. Supongo que en este momento es que mi código models.py se importa dos veces y que post_save se está conectando varias veces.
¿Cuál sería la mejor manera de descubrir por qué se está importando/ejecutando dos veces?
Si comente la línea de conexión post_delete' ', es la señal de 'post_save' levantó dos veces? – Desintegr
mirando el código django y realmente no envía guardar(), ¿estás seguro de que recibirás la señal post_delete y no post_save dos veces? –
@Desintegr - No puedo intentarlo por el momento, pero esa es una buena idea.Lo intentaré esta noche y actualizaré la pregunta. Si todavía ocurre después de eliminar el post_delete, simplemente cambiaré mi pregunta a "¿Por qué la señal post_save se genera dos veces?" :) ¿Tal vez el código models.py se está ejecutando dos veces y la señal se está conectando varias veces? –