I am implementing a notification system in my django application for which i am using signals (post_save
).
I am recording the changes in overridden save
method of the model and returning it. My query is that how can i catch it in function written for post_save
.
Relevant code snippets:
myapp/models.py:
class MyModel(models.Model):
# fields
#
#
def save(self, *args, **kw): #overridden save method
old = type(self).objects.get(pk=self.pk) if self.pk else None
super(MyModel, self).save(*args, **kw)
if old and old.attr != self.attr: # Field has changed
return something
#
#
myapp/views.py:
from django.db.models.signals import post_save
from django.dispatch import receiver
from django.contrib.auth.models import User
from webpush import send_user_notification
@receiver(post_save, sender=MyModel)
def notifier(sender, instance, created, **kwargs):
# how to catch the return values of save here ##
payload = {"head": "Welcome!", "body": "Hello World"}
send_user_notification(user=User.objects.all()[0], payload=payload, ttl=1000)
#here User.objects.all()[0] for test user
post_save.connect(receiver=notifier,sender=MyModel)