Je dois faire une sauvegarde avec un modèle mais j'ai besoin de déconnecter certains récepteurs des signaux avant de le sauvegarder.Déconnecter les signaux pour les modèles et reconnecter en django
Je veux dire,
J'ai un modèle:
class MyModel(models.Model):
...
def pre_save_model(sender, instance, **kwargs):
...
pre_save.connect(pre_save_model, sender=MyModel)
et dans un autre endroit dans le code je besoin de quelque chose comme:
a = MyModel()
...
disconnect_signals_for_model(a)
a.save()
...
reconnect_signals_for_model(a)
Parce que je dois dans ce cas, sauf le modèle sans exécuter la fonction pre_save_model.
Super. C'est la solution la plus élégante. Vous pouvez réutiliser le gestionnaire de contexte dans plusieurs parties du code. –
Un petit avertissement: 'weak = False' n'est pas la valeur par défaut lors de la connexion d'un récepteur à un signal. – spg
'weak' est [obsolète] (https://docs.djangoproject.com/fr/1.10/sujets/signaux/# débrochage signaux) En outre, les gens doivent être conscients que la désactivation d'un signal empêchera * tous * cas de déclenchement du signal, non seulement le contexte actuel (c.-à d'autres threads, en tant que signaux semblent être thread-safe) , comme le suggère [ici] (http://stackoverflow.com/questions/577376/django-how-do-i-not-dispatch-a-signal#comment64533494_10881618) –