注释计数相关的相关过滤对象

时间:2020-09-04 13:44:19

标签: django django-queryset django-database django-aggregation django-annotate

我有以下模型:

class Shop(..):
    category = ForeignKey...

class Product(..):
    shop = ForeignKey...
    category = ForeignKey...
    is_active = BooleanField...

class Category(..):
    name = ...

我需要注释每个类别的有效产品数量。

基本上是这样:

for cat in Category.objects.all():
    count = Product.objects.filter(shop__category=cat)

我尝试过:

Category.objects.annotate(product_count=Count('shop__products'),filter=Q(shop__products__is_active=True))

django.core.exceptions.FieldError: Related Field got invalid lookup: is_active

这将引发错误。你知道怎么注释吗?

1 个答案:

答案 0 :(得分:2)

filter应该是Count对象的参数:

Category.objects.annotate(product_count=Count('shop__products', filter=Q(shop__products__is_active=True)))
相关问题