Ok, então eu mudei a importação para
views.py (ou models.py e enquanto estava sendo importado apenas uma vez, estava sendo chamado duas vezes. O problema era que o
post_save signal estava sendo chamado quando o objeto foi criado e salvo. Não tenho ideia do porquê, então adicionei uma solução alternativa que agora funciona 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
Editar:
post_save estava sendo chamado duas vezes porque usei .create(...) que é equivalente a __init__(...) e .save() . Conclusão
dispatch_uid funciona e fazer importações únicas ainda é uma boa prática.