Как добавить функцию после вставки записи в базу данных с помощью администратора django? - PullRequest
0 голосов
/ 25 февраля 2019

Я хочу выполнить функцию после вставки записи в базу данных с помощью панели администратора django.

У меня есть таблица продуктов, я хочу отправлять уведомления пользователям, когда запись добавляется в базу данных административной панелью django.Я знаю, как отправлять уведомления пользователям, но я не знаю, где разместить свой код.

любое предложение будет полезным.

Как выполнить функцию уведомления пользователя после вставки моей записи?

вот мой код для выполнения после вставки записи:

from fcm_django.models import FCMDevice

device = FCMDevice.objects.all()

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

Я много искал, но ненашел что-нибудь полезное.

благодаря этой великой общности.

Ответы [ 3 ]

0 голосов
/ 25 февраля 2019

Возможно, вы захотите проверить сигнал post_save.Из документов:

Как и pre_save, но отправлено в конце метода save ().

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

django-версия: 1.7+

0 голосов
/ 25 февраля 2019

Вы можете изменить метод сохранения в вашей модели продукта

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).

0 голосов
/ 25 февраля 2019

Вам нужно использовать сигналы модели 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
...