Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Django Post-Save-Signal wird trotz UID zweimal aufgerufen

Ok, also habe ich den Import nach views.py verschoben (oder models.py und während es nur einmal importiert wurde, wurde es zweimal aufgerufen.

Das Problem war, dass der post_save Signal wurde aufgerufen, als das Objekt erstellt und gespeichert wurde. Ich habe keine Ahnung warum, also habe ich eine Problemumgehung hinzugefügt, die jetzt funktioniert

created = False

    #Workaround to signal being emitted twice on create and save
    if 'created' in kwargs:
        if kwargs['created']:
            created=True

    #If signal is from object creation, return
    if created:
        return

Bearbeiten:

post_save wurde zweimal aufgerufen, weil ich .create(...) verwendet habe was äquivalent zu __init__(...) ist und .save() .

Fazit

dispatch_uid funktioniert und einzelne Importe sind immer noch eine gute Praxis.