如何计算django ORM中多对多关系中的所有不同记录?

时间:2010-03-25 11:12:24

标签: python django orm

类Project(models.Model):      categories = models.ManyToManyField(Category)

class Category(models.Model):
 name = models.CharField()

现在,我做了一些查询集:

query = Project.objects.filter(id__in=[1,2,3,4])

我希望获得此查询集中所有不同类别的列表,其中包含引用这些类别的项目数量 - 我希望得到这样的结果:

category1 - 10 projects
category2 - 5 projects

与此查询相反:

query2 = query.annotate(Count('categories')) 
是什么让我回报:

project1 - 2categories
project2 - 7categories

我怎样才能在django ORM中制作它?

1 个答案:

答案 0 :(得分:0)

Category.objects.filter(project__in=query).annotate(Count('project'))