我有3个型号:Product, Brand, Shop
。我想在给定的Products
中计算Brands
可用的Shop
例如:
Adidas 50
Puma 25
现在我有:
queryset = Brand.objects
.filter(brand_id__in=id_list)
.order_by('brand_name')
queryset = queryset.annotate(amount_of_products=Count('products'))
但这给了我一些所有商店的产品。
我试过像here:
queryset = queryset.annotate(
amount_of_products=Count(
Case(When(shops__shop_name__in=[shop], then=1))
))
但我为列表中的每个amount_of_products = 1
获得Brand
有没有办法在Django 1.11中执行此条件表达式?
答案 0 :(得分:0)
实际上设法修复了这个:)
queryset = queryset.annotate(
amount_of_products=Count(
Case(When(products__shop__shop_name__in=[shop], then=1))
))
这只是ForeignKey
使用不当。