向特定类型的用户发送通知并使用 django 通道将通知保存在数据库中
Sending notification to a specific type of user and save the notification in the database using django channels
我想向特定的用户组发送通知。假设特定组是 Admin。当用户在管理员批准后在我的网站上注册时,用户将被激活。为此需要通知管理员。主要问题出在数据库设计上。我需要保存通知。
class Notification(models.Model):
view_name = models.CharField(max_length=255)
notification_type = models.CharField(max_length=255)
sender = models.ForeignKey(User, on_delete=models.DO_NOTHING, related_name='notification_sender')
recipient = models.ForeignKey(User, on_delete=models.DO_NOTHING, related_name='notification_receiver')
title = models.CharField(max_length=255)
redirect_url = models.CharField(max_length=255)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
is_read = models.BooleanField(default=False)
这是模型。这里 recipient 将是管理员。现在的主要问题是会有超过 1 个管理员。如果我想保存通知,我想到的解决方案是遍历 User 模型找到管理员并发送每个管理员通知,这不是一个好的解决方案。 Django 频道文档显示有一种方法可以使用 gruop_send() 发送多个用户是的,我可以使用它,但是如何将通知保存在具有多个收件人的数据库中?
您可以使用 Notification
和 User
之间的多对多关系将多个收件人关联到一个通知:
class Notification(models.Model):
view_name = models.CharField(max_length=255)
notification_type = models.CharField(max_length=255)
sender = models.ForeignKey(User, on_delete=models.DO_NOTHING, related_name='notification_sender')
recipients = models.ManyToManyField(User, related_name='notification_receivers')
title = models.CharField(max_length=255)
redirect_url = models.CharField(max_length=255)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
is_read = models.BooleanField(default=False)
然后访问收件人:
notification = Notification.objects.get(id=1)
recipients = notification.recipients.all()
我想向特定的用户组发送通知。假设特定组是 Admin。当用户在管理员批准后在我的网站上注册时,用户将被激活。为此需要通知管理员。主要问题出在数据库设计上。我需要保存通知。
class Notification(models.Model):
view_name = models.CharField(max_length=255)
notification_type = models.CharField(max_length=255)
sender = models.ForeignKey(User, on_delete=models.DO_NOTHING, related_name='notification_sender')
recipient = models.ForeignKey(User, on_delete=models.DO_NOTHING, related_name='notification_receiver')
title = models.CharField(max_length=255)
redirect_url = models.CharField(max_length=255)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
is_read = models.BooleanField(default=False)
这是模型。这里 recipient 将是管理员。现在的主要问题是会有超过 1 个管理员。如果我想保存通知,我想到的解决方案是遍历 User 模型找到管理员并发送每个管理员通知,这不是一个好的解决方案。 Django 频道文档显示有一种方法可以使用 gruop_send() 发送多个用户是的,我可以使用它,但是如何将通知保存在具有多个收件人的数据库中?
您可以使用 Notification
和 User
之间的多对多关系将多个收件人关联到一个通知:
class Notification(models.Model):
view_name = models.CharField(max_length=255)
notification_type = models.CharField(max_length=255)
sender = models.ForeignKey(User, on_delete=models.DO_NOTHING, related_name='notification_sender')
recipients = models.ManyToManyField(User, related_name='notification_receivers')
title = models.CharField(max_length=255)
redirect_url = models.CharField(max_length=255)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
is_read = models.BooleanField(default=False)
然后访问收件人:
notification = Notification.objects.get(id=1)
recipients = notification.recipients.all()