为用户组内的消息制作“已查看”属性的最佳方法是什么?

时间:2017-12-26 18:17:51

标签: django django-models social-networking django-orm

我决定如何跟踪用户是否在时间轴中看过帖子。

PostComment这样的模型。

class Comment(models.Model):
    author = models.ForeignKey('UserProfile')
    title = models.CharField(max_length=255)
    text = models.TextField(null=True, blank=True)
    date_created = models.DateTimeField()

    post = models.ForeignKey('Post', related_name='comments')

class Post(ContentTypeModel):
    title = models.CharField(max_length=255)
    group = models.ForeignKey('UserGroup', null=True)

    date_updated = models.DateTimeField()

关于如何跟踪用户post的特定成员是否看到group的最佳做法的建议将会很好。

1 个答案:

答案 0 :(得分:0)

我设法按照建议做,即将m2m关系添加到追踪帖子的跟踪:

class Post(models.Model):
    ...
    date_updated = models.DateTimeField()
    viewers = models.ManyToManyField('UserProfile', through='PostViewer')

class PostViewer(models.Model):
    post = models.ForeignKey(Post, on_delete=models.CASCADE)
    viewer = models.ForeignKey('UserProfile', on_delete=models.CASCADE, related_name='posts_seen')

    last_seen = models.DateTimeField(null=True, blank=True, help_text='Is set when user sees the post in details')

    class Meta:
        unique_together = ('post', 'viewer')

通过这种方式,我可以将post.date_updatedviewer.last_seen进行比较,并获得有关谁看过Post的更新/创建的所需过滤。