首页 > 解决方案 > 如何在 Django 中使用带有过滤器的多个注释?

问题描述

我使用下面的代码来获取结果,但总交易和总优惠券总是得到相同的输出。我不知道这段代码发生了什么。

total_coupons = Count('coupon', filter=Q(coupon__is_sale__lte=0))
total_deals = Count('coupon', filter=Q(coupon__is_sale__gt=0))

queryset = coupon.objects.values('store_id','store_name','store_site','affiliate_url').annotate(total_deals=total_deals, total_coupons=total_coupons)

那么如何编写查询以便它给我以下结果呢?

store_id  store_name store_site affiliate_url total_coupons total_deals
1         abc        abc.com    anything       5             3         (totsl is 8)

反正有没有超过输出?

标签: pythondjangodjango-models

解决方案


你可以试试这个,annotate(total_deals=total_deals).annotate(total_coupons=total_coupons)不是.annotate(total_deals=total_deals, total_coupons=total_coupons)

queryset = coupon.objects.values('store_id','store_name','store_site','affiliate_url').annotate(total_deals=total_deals).annotate(total_coupons=total_coupons)

推荐阅读