Estoy tratando de actualizar inmediatamente un registro después de guardarlo. Este ejemplo puede parecer inútil, pero imaginar que tenemos que utilizar una API después de los datos se guardan para obtener algo de información extra y actualizar el registro:post_save en django para actualizar la instancia inmediatamente
def my_handler(sender, instance=False, **kwargs):
t = Test.objects.filter(id=instance.id)
t.blah = 'hello'
t.save()
class Test(models.Model):
title = models.CharField('title', max_length=200)
blah = models.CharField('blah', max_length=200)
post_save.connect(my_handler, sender=Test)
Así se supone que el campo 'extra' que se pone a 'hola' después de cada guardado. ¿Correcto? Pero no está funcionando.
¿Alguna idea?
¿Quizás podría describir cómo no funciona? A primera vista, parece que sería un bucle infinito, ya que post_save llama a guardar, lo que debería invocar post_save, etc. ¿Tal vez Django está impidiendo la recursión? –
Veo un bucle infinito allí. Después de t.save() se envía una señal post_save, adivine qué función se llama ... – stefanw
oh, estaba bajo la impresión de que Django no permitiría que el segundo guardado activara post_save nuevamente? Supongo que no. En ese caso, tienes razón. Sería un ciclo infinito. Pero no estoy viendo el ciclo ni nada. – givp