post 中使用的标签被用户评论的次数

Number of times Tags used in post which were commented by user

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

其中,如果用户对 post 发表评论 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

此 table 显示:- 用户评论 post 时使用了之前 post 中使用的标签。

例如:-

一个名为“user_1”的新用户评论了 Post,标签为 tag5tag6tag8,然后是 A query将显示 user_1 已对 post 标签 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 postrequest.user 评论的标签,如 :-

tag1

tag2

tag2

但我不知道,我该如何注释才能显示 post 上由 request.user 评论的已用标签的数量,如上 table.

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

注意 :- 我正在为 Tags 使用 Django-TaggitTaggableManager() 在博客Post 模型中)

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

有了它,您可以像这样注释标签的数量:

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