如何在使用 django admin 将记录插入数据库后添加功能?

How to add a function after a record inserted in database using django admin?

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

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

任何建议都会有所帮助。

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

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

from fcm_django.models import FCMDevice

device = FCMDevice.objects.all()

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

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

感谢这个伟大的社区。

您需要使用 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

您可能想检查 post_save 信号。来自文档:

Like pre_save, but sent at the end of the save() method.

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

django 版本:1.7+

您可以修改产品型号的保存方式

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 管理面板中添加时)。