Dobře, přesunul jsem import do views.py (nebo models.py a zatímco byl importován pouze jednou, byl volán dvakrát.
Problém byl v tom, že post_save signál byl volán, když byl objekt vytvořen a také uložen. Nevím proč, tak jsem přidal řešení, které nyní funguje
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
Upravit:
post_save byl volán dvakrát, protože jsem použil .create(...) což je ekvivalentní __init__(...) a .save() .
Závěr
dispatch_uid funguje a provádění jednotlivých importů je stále dobrou praxí.