【发布时间】:2014-03-18 08:56:59
【问题描述】:
对于模型,例如与模型 Topping 有一对多关系的比萨饼 如何查询只有 2 个 Toppings 的所有 Pizzas?
我之前对披萨进行了迭代,并对 Toppings 计数进行了单独查询,并且只将带有 2 的那个添加到了我的列表中。但我遇到了性能问题。
【问题讨论】:
对于模型,例如与模型 Topping 有一对多关系的比萨饼 如何查询只有 2 个 Toppings 的所有 Pizzas?
我之前对披萨进行了迭代,并对 Toppings 计数进行了单独查询,并且只将带有 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)
)
【讨论】:
你有没有尝试过这样的事情:
from django.db.models import Count
Pizzas.objects.annotate(tc=Count('toppings')).filter(tc=1)
【讨论】: