Отправка уведомления указанным c пользователям в Django - PullRequest
0 голосов
/ 02 марта 2020

Я немного застрял, когда работаю над проектом Django (создание и планирование собрания). Мне нужна ваша помощь!

Для проекта я хочу отправить уведомление (вероятно, всплывающее, поскольку я не использую электронную почту при регистрации) пользователям, которые были выбраны создателем собрания. Они получат уведомление при первом входе в систему. Я посмотрел на структуры обмена сообщениями Django, но, похоже, у них нет метода, который я ищу. Я также очень плохо знаком с Django, поэтому мне очень нужна ваша помощь! Любые предложения будут оценены!

Ответы [ 2 ]

2 голосов
/ 02 марта 2020

Вам понадобится модель, которая идентифицирует уведомление.

class Notification(models.Model):
    created = models.DateTimeField(auto_add_now=True)
    updated = models.DateTimeField(auto_now=True)
    text = models.TextField()
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    read = models.DateTimeField(null=True, blank=True)

Вы можете создать любое количество уведомлений для пользователя в любом месте вашего приложения.

Если вам нужно показать их на любой странице лучше всего использовать их в процессоре контекста . Если бы это было только на указанной c странице, я бы добавил их в контекст визуализации шаблона для этого представления.

Что касается пометки их как прочитанных, у вас есть решение принять. Вы можете пометить их как прочитанные, когда они будут отображаться пользователю, что произойдет одновременно с извлечением их в любой из указанных выше ситуаций. Или вы можете заставить пользователя отклонить их, а затем пометить как прочитанные. Если вы сделаете это, вам потребуется представление ajax, которое принимает идентификатор уведомления или какой-либо другой идентификатор, проверяет, запрашивающий пользователь соответствует пользователю уведомления и устанавливает read=django.utils.timezone.now()

Редактировать:

Перечитав вопрос, вот более подходящий ответ:

class Notification(models.Model):
    created = models.DateTimeField(auto_add_now=True)
    text = models.TextField()
    users = models.ManyToManyField(User, through='NotificationUser')

class NotificationUser(models.Model):
    created = models.DateTimeField(auto_add_now=True)
    updated = models.DateTimeField(auto_now=True)
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    notification = models.ForeignKey(User, on_delete=models.CASCADE)
    read = models.DateTimeField(null=True, blank=True)

Таким образом, вы можете иметь один экземпляр уведомления с его свойствами, такими как текст (или, возможно, создатель). Кроме того, у пользователя-уведомителя указываются c свойства, например, прочитал / увидел ли этот конкретный пользователь уведомление. Изменить: я перечитал вашу проблему, и он говорит, чтобы отправить уведомление нескольким пользователям. В этом случае что-то вроде этого может быть лучше.

0 голосов
/ 02 марта 2020

Использовать стороннее приложение django уведомления. Это сделает работу.

...