Django按组计数过滤

时间:2014-03-18 08:57:00

标签: python django

对于一个模型,例如披萨与模特Topping有很多关系 如何仅使用2个Toppings查询所有Pizzas?

我之前迭代过Pizzas并对Toppings计数进行了单独的查询,并且只在我的列表中添加了一个2。但我遇到了性能问题。

2 个答案:

答案 0 :(得分:2)

您可以按注释进行过滤(在https://docs.djangoproject.com/en/dev/topics/db/aggregation/#filtering-on-annotations中描述)

doubles = ( Pizza
     .objects
     .annotate(num_toppings=Count('toppings'))
     .filter(num_toppings=2)
    )

答案 1 :(得分:0)

你有没有尝试过类似的东西:

from django.db.models import Count

Pizzas.objects.annotate(tc=Count('toppings')).filter(tc=1)