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

时间:2019-02-25 10:50:30

标签: python django django-admin django-admin-tools django-admin-actions

我想在使用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"})

我搜寻了很多,但没有发现任何有用的东西。

感谢这个伟大的社区。

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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

  

类似于pre_save,但在save()方法的末尾发送。

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

django版本:1.7+

答案 2 :(得分:0)

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

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管理面板中添加实例时),它都会发送通知。