【问题标题】:Number of times Tags used in post which were commented by user用户评论的帖子中使用标签的次数
【发布时间】:2021-11-14 18:21:22
【问题描述】:

我正在构建一个简单的博客应用程序并尝试实现一个功能。

其中,如果用户使用post tags - tag1, tag2 对帖子发表评论。 我将检索Tags of which user commented on post 我正在尝试计算Number of times a user commented on a post with same tag

就像我想展示的那样:-

Tag Name Number of times used
tag1 16 Times
tag2 10 Times
tag3 8 Times

此表显示:- 用户使用上一篇文章中使用的标签评论了一篇文章。

例如:-

名为“user_1”的新用户评论了带有标签tag5tag6tag8 的帖子,然后query 将显示user_1 评论了帖子标签1 times in tag51 time in tag61 time in tag8。 剩下的我会在以后做。

models.py

class BlogPost(models.Model):
    user = models.ForeinKey(User, on_delete=models.CASCADE)
    title = models.CharField(max_length=30)
    tags = TaggableManager()

class Comment(models.Model):
    comment_by = models.ForeignKey(User, on_delete=models.CASCADE)
    on_post = models.ForeignKey(BlogPost, on_delete=models.CASCADE)

views.py

def examplePage(request):
    query = Tag.objects.filter(blogpost__user=request.user)

    context = {'query': query}
    return render(request, 'examplePage.html', context)

此视图显示used in post 的标签,这些标签由request.user 评论,例如:-

tag1

tag2

tag2

但我不知道,我该如何注释,以便它可以显示request.user 评论的帖子上使用的标签数量,如上表。

任何帮助将不胜感激。谢谢。

注意 :- 我将 Django-Taggit 用于 Tags(在 BlogPost 模型中使用 TaggableManager()

【问题讨论】:

    标签: python django django-models django-views django-queryset


    【解决方案1】:

    使用blogpost__user 会导致标签被(我假设)BlogPost 的作者而不是评论者过滤,所以我想你会想要使用blogpost__comment__comment_by

    你可以这样注释标签的数量:

    Tag.objects.filter(
        blogpost__comment__comment_by=request.user
    ).values(
        'name'
    ).annotate(
        times_used=Count('name')
    )
    

    【讨论】:

      猜你喜欢
      • 2016-05-27
      • 2018-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-01
      • 2019-05-23
      • 1970-01-01
      • 2022-01-10
      相关资源
      最近更新 更多