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

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

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

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

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

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

from fcm_django.models import FCMDevice

device = FCMDevice.objects.all()

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

Я много искал, но не нашел ничего полезного.

благодаря этому великому общению.

3 ответа

Решение

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

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

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

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

URL: https://docs.djangoproject.com/en/2.1/ref/signals/

Джанго-версия: 1.7+

Другие вопросы по тегам