update_fields trigger signal example español django django-signals

trigger - django post_save señales en actualización



trigger django (2)

Estoy intentando configurar algunos receptores post_save similares a los siguientes

@receiver(post_save, sender=Game, dispatch_uid=''game_updated'') def game_updated(sender, **kwargs): ''''''DO SOME STUFF HERE'''''' MyPick.objects.filter(week=game.week, team=game.home_team).update(result=home_result) MyPick.objects.filter(week=game.week, team=game.away_team).update(result=away_result) @receiver(post_save, sender=MyPick, dispatch_uid=''user_pick_updated'') def update_standings(sender, **kwargs): ''''''DO STUFF''''''

El primer receptor recibe una llamada correctamente después de una actualización en el objeto de Juego, sin embargo, las llamadas a actualizar en el objeto MyPick no hacen que se llame al segundo receptor. ¿La señal post_save no funciona en la actualización o me estoy perdiendo algo más aquí?

Gracias


Solo una cosa más a la respuesta de @Ismali Badawi.

Esta llamada post_save

user = User.objects.get(id=1) user.username=''edited_username'' user.save()

Esto no llama post_save

User.objects.filter(id=1).update(username=''edited_username'')

En el código,

from django.db.models.signals import post_save @receiver(post_save, sender=User) def do_something_when_user_updated(sender, instance, created, **kwargs): if not created: # User object updated user_obj = instance pass


update() se convierte directamente a una sentencia de SQL ; no llama a save() en las instancias del modelo, por lo que las señales pre_save y post_save no se emiten. Si desea que se llame a sus receptores de señal, debe hacer un bucle sobre el conjunto de consultas, y para cada instancia del modelo, realice los cambios y llame a save() .