I have registered my signal with the callback using the @receiver
decorator
@receiver(post_save, sender=User, dispatch_uid='ARandomUniqueString')
def do_callback(sender, **kwargs):
I have put the from app.signals import *
code in __init__.py
and I can see that it gets imported twice and I do not think there is a good way to fix it, possibly happening due to installed apps
in settings.py
. I cannot understand why despite using dispatch_uid
and the modelInstance.save
being invoked only once, it still runs do_callback
twice. Any suggestions?
Best Answer
Ok so I moved the import to
views.py
(ormodels.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 worksEdit:
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.