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()
.