【发布时间】:2021-04-08 07:48:02
【问题描述】:
所以我正在使用 Django 和 Django REST 框架为网络论坛构建后端,并希望包含一个通知系统。
所以我有一个“讨论”模型:
def user_directory_path(instance, filename):
return f'{instance.id}/{filename}'
class Discussion(models.Model):
title = models.CharField(max_length=250)
content = models.TextField(max_length=10000)
date_created = models.DateTimeField(auto_now_add=True)
date_updated = models.DateTimeField(auto_now=True)
is_pinned = models.BooleanField(default=False)
is_open = models.BooleanField(default=True)
is_boosted = models.BooleanField(default=False)
started_by = models.ForeignKey(to=User, related_name='started_discussions', on_delete=models.CASCADE)
subscribers = models.ManyToManyField(to=User, related_name='subscribed_discussions')
tools = models.ManyToManyField(to=Tool, related_name='belongs_to_channels', blank=True)
channels = models.ManyToManyField(to=Channel, related_name='discussions')
def __str__(self):
return f'{self.id} | By: {self.started_by.username} | Content: {self.title} ...'
我有一个“评论”模型:
class Comment(models.Model):
content = models.CharField(max_length=5000)
discussion = models.ForeignKey(to=Discussion, related_name='comments', on_delete=models.CASCADE)
written_by = models.ForeignKey(to=User, related_name='written_comments', on_delete=models.CASCADE)
liked_by = models.ManyToManyField(to=User, related_name='liked_comments', blank=True)
def __str__(self):
return f'{self.id} | By: {self.written_by.username} | {self.content[0:30]} ...'
基本上我的问题是我想创建一个功能,如果有人在讨论中创建新评论,订阅此讨论的用户将收到通知。因此,例如,如果有人对您订阅的讨论发表评论,您将收到一条通知“来自 {user that commented} 对 {discussion you're subscribed to} 的新评论”
我的想法是创建一个新的 django 应用程序“通知”,其中包含相应的模型和序列化程序。但我真的不知道如何开始或实现它的最佳方法是什么?
希望我能够提供足够的信息供某人回答并提前非常感谢!
【问题讨论】:
-
我没用过,不过github.com/django-notifications/django-notifications 看起来可能就是你要找的东西。
-
谢谢,我看看能不能用:)
标签: python django django-models django-rest-framework