Одно и то же уведомление нескольким выбранным пользователям в django

Я пытаюсь реализовать страницу уведомлений на своем сайте на Django. Но у меня возникла проблема, как я могу отправить одно и то же уведомление нескольким пользователям.

Предположим, мне нужно отправить его только одному пользователю. тогда я могу создать модель уведомления с

noti = models.TextField()
user= models.foreignkey
is_seen = models.bool

Итак, это просто пример. но проблема в том, как я могу отправить это уведомление нескольким выбранным пользователям

важно то, что is_seen является обязательным для каждого пользователя

Надеюсь, вы поймете

Я думаю, это зависит от того, как эти данные будут расти в будущем. Потому что если все ваши уведомления идут нескольким пользователям, вы можете иметь модель Notification с отношением ManyToMany с User. Что-то вроде следующего

class Notification(models.Model):
    message = models.TextField()
    users = models.ManyToMany(User, through='UserNotification')


class UserNotification(model.Model):
    user = models.ForeignKey(User)
    notification = models.ForeignKey(Notification)
    is_seen = models.BooleanField()

Но другой вопрос, если вы хотите создать что-то подобное тому, чем вы поделились, это тоже нормально. Я не думаю, что существует проблема добавления одного и того же сообщения для нескольких пользователей. На мой взгляд, это более гибкий подход по сравнению с M2M. Вы сможете легко расширить его в будущем по мере роста вашего приложения.

class Notification(model.Model):
    message = models.TextField()
    user = models.ForeignKey(User)
    is_seen = models.BooleanField)

Другой случай может быть, если вы хотите иметь больше отношений и если есть необходимость добавить больше информации, связанной с уведомлением. Это дает больше возможностей для улучшения в будущем в плане хранения информации.

class Notification(model.Model):
    message = models.TextField()


class UserNotification(model.Model):
    user = models.ForeignKey(User)
    notification = models.ForeignKey(Notification)
    is_seen = models.BooleanField()
Вернуться на верх