4

我想在使用 django-admin panel 将记录插入数据库后执行一个函数。

我有一个产品表,我想在 django 管理面板将记录插入数据库时​​向用户发送通知。我知道如何向用户发送通知,但我不知道将我的代码放在哪里。

任何建议都会有所帮助。

插入记录后如何执行通知用户的功能?

这是插入记录后要执行的代码:

from fcm_django.models import FCMDevice

device = FCMDevice.objects.all()

device.send_message(title="Title", body="Message", icon=..., data={"test": "test"})

我搜索了很多,但没有找到任何有用的东西。

感谢这个伟大的社区。

4

3 回答 3

1

您可以在您的产品模型上修改保存方法

def save(self, *args, **kwargs):
    super().save(*args, **kwargs)
    device = FCMDevice.objects.all()
    device.send_message(title="Title", body="Message", icon=..., data={"test": "test"})

好吧,它会在每次保存实例时发送通知(不仅是在 django 管理面板中添加它时)。

于 2019-02-25T11:02:51.317 回答
0

您需要使用 Django 模型post_save信号来实现这一点。该信号接收器可以放置在模型所在的同一位置

class FCMDevice(models.Model):
    ...

@receiver(post_save, sender=FCMDevice)
def notify_users(sender, instance, **kwargs):
     # your logic goes here
     # instance is referred to currently inserted row
     pass
于 2019-02-25T10:59:28.917 回答
0

你可能想检查post_save信号。从文档:

与 pre_save 类似,但在 save() 方法结束时发送。

网址:https ://docs.djangoproject.com/en/2.1/ref/signals/#post-save

django 版本:1.7+

于 2019-02-25T10:59:40.010 回答