我在我的Django项目中实现了一个通知系统,每当有人评论他们的帖子/博客或喜欢它时,用户都会收到通知。我基本上是在创建一个数据库条目,每次都向用户提取未读的通知。
我的通知表是
class notifications(models.Model):
time = models.DateTimeField(blank=True)
message = models.TextField()
object_type = models.CharField(max_length=255)
object_url = models.CharField(max_length=500)
n_reciever = models.IntegerField()
n_sender = models.ForeignKey(User,null=True)
is_read = models.BooleanField(default=False)
def save(self, *args, **kwargs):
if not self.id:
self.time = datetime.datetime.now()
super(notifications, self).save(*args, **kwargs)
每次对象被评论或喜欢或设置为收藏时,我都可以生成一个信号,该信号将由负责在此表中输入的信号处理程序捕获。
我正在使用自定义中间件检查每个页面刷新是否有新通知,方法是查询表中is_read
字段为false的对象。我已将表格设为通用,以便它可以包含任何类型活动的通知。
所以情况可以归结为我有多个信号,对于每个信号,我有相同的信号处理程序,它将在数据库中生成所需的条目。我怎么能这样做?
我可以做这样的事吗
blog_liked.connect(notification_handler)
blog_set_favorite.connect(notification_handler)
.
.
.
即。将相同的处理程序与多个信号联系起来,我将确保所有信号都发送相同的数据。
我还要感谢我用于为用户生成通知的技术的任何反馈。
答案 0 :(得分:1)
您可能需要查看django-activity-stream,这是您正在做的事情的变体。使用它的好处是它试图与正在开发的Activty Streams标准相匹配。