Ok jadi saya memindahkan impor ke views.py (atau models.py dan ketika diimpor hanya sekali, itu dipanggil dua kali.
Masalahnya adalah post_save sinyal dipanggil saat objek dibuat serta disimpan. Saya tidak tahu mengapa, jadi saya menambahkan solusi yang sekarang berfungsi
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
Sunting:
post_save dipanggil dua kali karena saya menggunakan .create(...) yang setara dengan __init__(...) dan .save() .
Kesimpulan
dispatch_uid berhasil dan melakukan impor tunggal masih merupakan praktik yang baik.