Ich habe eine Signal-Handler-Funktion in meiner models.py-Datei definiert. Am Ende dieser Datei verwende ich signals.post_save.connect(myhandler, sender=myclass)
wie in der Dokumentation unter http://docs.djangoproject.com/en/dev/topics/signals/ empfohlen.Signale registriert mehr als einmal in django1.1 testserver
Wenn ich jedoch den Testserver starte, zeigt das einfache print-statement-Debugging, dass die Datei models.py zweimal importiert wird und (soweit ich das beurteilen kann), dass mein Signalhandler zweimal registriert wird. Dies bedeutet, dass jede Aktion zweimal behandelt wird, was offensichtlich nicht das beabsichtigte Verhalten ist.
Der erste Import scheint während der Modellprüfungsphase aufzutreten, und der zweite erfolgt genau dann, wenn das Modell selbst während der ersten vom Server abgefragten Anforderung benötigt wird.
Sollte ich meine Signale Handler anderswo registrieren? Ist das ein Fehler im 1.1 Testserver? Vermisse ich etwas anderes?
Fantastisch! das ist genau das was ich gesucht habe, es löst mein Problem. Es fühlt sich immer noch etwas unhandlich an, dies für jeden einzigartigen Signal-Handler zu tun, den ich erstelle, aber was auch immer funktioniert ... Ich frage mich, warum sich dieses Verhalten in 1.1 geändert hat. –
Dieses Verhalten ändert sich, weil Signale nicht gut unterstützt werden. Fast alles, was Sie jemals brauchen, kann durch Überschreiben von 'save' erfolgen. –
Siehe http://stackoverflow.com/questions/170337/django-signal-vs-overriding-save-method für eine Diskussion darüber, wann "speichern" und wann Signale verwendet werden sollen –