J'ai une situation où lorsque l'un de mes modèles est sauvé MyModel
Je veux vérifier un champ, et déclencher le même changement de tout autre modèle avec le même some_key.
Django, post_save signal recrusion. Comment le signal contourner le tir
Le code fonctionne très bien, mais son appel récursivement les signaux. Par conséquent, je gaspille des appels CPU/DB/API. Je veux essentiellement contourner les signaux pendant le .save().
Des suggestions?
class MyModel(models.Model):
#bah
some_field = #
some_key = #
#in package code __init__.py
@receiver(models_.post_save_for, sender=MyModel)
def my_model_post_processing(sender, **kwargs):
# do some unrelated logic...
logic = 'fun! '
#if something has changed... update any other field with the same id
cascade_update = MyModel.exclude(id=sender.id).filter(some_key=sender.some_key)
for c in cascade_update:
c.some_field = sender.some_field
c.save()
Cela me fait peur (au cas où quelque chose ne va pas ...) ... mais ça va marcher. – Nix
Qu'est-ce qui pourrait mal tourner? La seule chose qui se passe entre la déconnexion et la connexion est la sauvegarde, et si cela ne fonctionnait pas, vous ne seriez même pas là. –
Relier le back up pourrait aller mal ... Je pense que c'est l'approche, il tombe juste dans la catégorie semble vraiment effrayant. – Nix