J'ai défini une fonction de gestionnaire de signal dans mon fichier models.py. Au bas de ce fichier, j'utilise signals.post_save.connect(myhandler, sender=myclass)
comme recommandé dans les documents au http://docs.djangoproject.com/en/dev/topics/signals/. Cependant, lorsque je lance le serveur de test, le simple débogage des instructions d'impression montre que le fichier models.py est importé deux fois et (pour autant que je sache), cela entraîne l'enregistrement de mon gestionnaire de signaux deux fois. Cela signifie que chaque action est traitée deux fois, ce qui n'est évidemment pas le comportement voulu. La première importation semble se produire pendant la phase de vérification du modèle, et la seconde se produit lorsque le modèle lui-même est nécessaire lors de la première demande traitée par le serveur.Signaux enregistrés plusieurs fois dans django1.1 testserver
Dois-je enregistrer mes gestionnaires de signaux ailleurs? Est-ce un bug dans le serveur de test 1.1? Est-ce que je manque quelque chose d'autre?
Fantastique! c'est exactement ce que je cherchais, ça résout mon problème. Il me semble toujours un peu maladroit d'avoir à le faire pour chaque gestionnaire de signal unique que je crée, mais tout ce qui fonctionne ... Je me demande pourquoi ce comportement a changé en 1.1. –
Ce comportement change car les signaux ne sont pas correctement pris en charge. Presque tout ce dont vous avez besoin peut être fait en remplaçant 'save'. –
Voir http://stackoverflow.com/questions/170337/django-signals-vs-overriding-save-method pour une discussion sur le moment de surcharger 'save' et quand utiliser les signaux –