Django: отправка уведомлений пользователю на основе изменений в базе данных
У меня есть 3 таблицы базы данных:
- users (хранит информацию о пользователях, например, email, имя)
- метаданные (хранит данные)
- activity (хранит изменения, внесенные в таблицы пользователей/метаданных)
Я хочу добиться следующего:
- для хранения любых изменений в таблице активности (например, создан новый пользователь, пользователь обновляет таблицу метаданных)
- посылать уведомления пользователям, когда происходит изменение в таблицах пользователей/метаданных.
Какие библиотеки/метод я мог бы использовать для достижения желаемого функционала? Спасибо!
В дополнение к django signals
, который мы уже рекомендовали, вы также можете посмотреть django channels
+ django activity stream
Предполагая, что вы используете Django Models, я бы использовал Django Signals для сохранения данных во второй модели: "MetaData" в соответствии с вашим вопросом.
В частности, сигнал post_save
:
https://docs.djangoproject.com/en/4.0/ref/signals/#django.db.models.signals.post_save
@receiver(post_save, sender=User)
def post_save_user(sender, instance, created, **kwargs):
# Save Stuff To Metadata Model.
meta = MetaData(user=instance)
meta.save()
Вам нужно импортировать эти сигналы внутрь вашего models.py
, размещенного в нижней части файла.
Что касается уведомлений, я бы последовал совету @kristina и использовал Django Channels.
Напоминаю, что ваше приложение должно быть ASGI (Async). Поэтому ваш сервер приложений должен быть таким, как uvicorn, daphne, hypercorn и т.д.