Ok so I moved the import to views.py
(or models.py
and while it was getting imported only once, it was getting called twice.
The problem was that the post_save
signal was getting called when the object was created as well as saved. I have no idea why so I added a workaround which now works
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
Edit:
post_save
was getting called twice because I used .create(...)
which is equivalent to __init__(...)
and .save()
.
Conclusion
dispatch_uid
does work and doing single imports is still a good practice.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…