Ok donc j'ai déplacé l'import vers views.py
(ou models.py
et alors qu'il n'était importé qu'une seule fois, il était appelé deux fois.
Le problème était que le post_save
signal était appelé lorsque l'objet a été créé et enregistré. Je ne sais pas pourquoi, alors j'ai ajouté une solution de contournement qui fonctionne maintenant
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
Modifier :
post_save
a été appelé deux fois parce que j'ai utilisé .create(...)
qui équivaut à __init__(...)
et .save()
.
Conclusion
dispatch_uid
fonctionne et faire des importations uniques est toujours une bonne pratique.