在为Django中的post_save编写的自定义函数中捕获重写的保存函数的返回值

问题描述 投票:0回答:1

我正在使用信号(post_save)的Django应用程序中实现一个通知系统。

我正在记录模型的重写save方法中的更改并将其返回。我的查询是如何在为post_save编写的函数中捕获它。

相关代码段:

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)

我正在django应用程序中实现一个通知系统,为此我正在使用信号(post_save)。我正在记录模型的覆盖保存方法中的更改并将其返回。我的查询...

django django-models django-views django-signals
1个回答
0
投票

您必须像这样将这些“东西”保存在模型实例中:

© www.soinside.com 2019 - 2024. All rights reserved.