我在进行Django项目(创建和安排会议)时有点困惑。我需要你的帮助!
对于该项目,我想向会议创建者选择的用户发送通知(可能会弹出一个通知,因为我在注册时未实现电子邮件)。他们首次登录时会收到通知。我看过Django的消息传递框架,但似乎他们没有我要的方法。我对Django也很陌生,所以我真的需要您的帮助!任何建议,将不胜感激!
您将需要一个标识通知的模型。
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)
您可以在应用程序中的任何位置为用户创建许多通知。
如果需要在任何页面上显示它们,最好将它们拉到context processor中。如果仅在特定页面上,则将它们添加到该视图的模板渲染上下文中。
关于标记为已读,您需要做出决定。您可以选择将它们呈现给用户时标记为已读,而在上述两种情况下,在将它们拉出时都会同时发生。或者,您可以强制用户将其关闭,然后将其标记为已读。如果这样做,则需要一个带有通知ID或其他标识符的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)
这样,您可以拥有一个具有其属性(例如文本(或创建者))的单个通知实例。然后具有通知用户特定的属性,例如该特定用户是否已阅读/查看该通知。编辑:我重新阅读了您的问题,它说要向多个用户发送通知。在这种情况下,可能会更好。
使用第三方应用程序django通知。它将完成工作。