Ok, quindi ho spostato l'importazione in views.py
(o models.py
e mentre veniva importato solo una volta, veniva chiamato due volte.
Il problema era che il post_save
il segnale veniva chiamato quando l'oggetto è stato creato e salvato. Non ho idea del perché, quindi ho aggiunto una soluzione alternativa che ora funziona
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
Modifica:
post_save
è stato chiamato due volte perché ho usato .create(...)
che equivale a __init__(...)
e .save()
.
Conclusione
dispatch_uid
funziona e fare singole importazioni è ancora una buona pratica.