首页 > 解决方案 > 如何在 Django ORM 中计算带有用户标签名称的标签

问题描述

我有一个像下面这样的帖子模型,我正在使用django-taggit

class Post(models.Model):
  user = models.ForeignKey(User)
  post = models.TextField()
  tags = TaggableManager()

>>>p1 = Post(user='user1', post='Some description', tags="python, java, js")
>>>p1.save()
>>>p2 = Post(user='user2', post='Some description', tags="c, java, js")
>>>p2.save()
>>>p3 = Post(user='user1', post='Some description', tags="c, js, python")
>>>p3.save()

现在我想获取每个用户的标签和标签计数,如下所示

{
  'user1': {'python':2, 'java':1, 'js':2, 'c':1}, 
  'user2': {'c':1,'java':1,'js':1}
}

我尝试使用注释、聚合但无法编写确切的查询。

标签: pythondjangodjango-orm

解决方案


Post.objects.filter(tags__name__in=["python"]).count()

推荐阅读