我有这样的模特
class Category(models.Model):
name = models.CharField()
…
class Product(models.Model):
category = models.ForeignKey(Category, verbose_name=‘cat’)
name = models.CharField()
price = models.IntegerField()
我需要创建queryset,它将选择价格> = 100按类别分组的所有产品。之后我需要计算每个类别的产品数量。
我做了
categories = Category.objects.filter(product__price__gte = 100)
此查询集为我提供了所有类别,其中包含价格> = 100的产品。但我如何才能获得产品数量和产品数量?也许我需要使用prefetch_related,但我不知道如何。
答案 0 :(得分:1)
您可以使用来自Count
的条件聚合django
来实现此目的。
categories = Category.objects.filter(product__price__gte = 100).\
annotate(count_of_products=Count('products', filter=Q(product__price__gte = 100)))