Ok, więc przeniosłem import do views.py
(lub models.py
i chociaż importowano go tylko raz, wywoływano go dwukrotnie.
Problem polegał na tym, że post_save
sygnał był wywoływany, gdy obiekt został utworzony, a także zapisany. Nie mam pojęcia dlaczego, więc dodałem obejście, które teraz działa
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
Edycja:
post_save
został wywołany dwukrotnie, ponieważ użyłem .create(...)
co jest równoważne z __init__(...)
i .save()
.
Wniosek
dispatch_uid
działa, a wykonywanie pojedynczych importów jest nadal dobrą praktyką.