Как добавить функцию после вставки записи в базу данных с помощью администратора 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+