python - 如何在 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)
反正有没有超过输出?
解决方案
你可以试试这个,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)
推荐阅读
- r - 数据操作在R中的新行中按日期聚合值
- c++ - 我可以使用 std::align 将内存对齐到任意值 2 吗?
- r - group_by + nest 的高性能替代方案
- tmux - 尝试使用 byobu 复制和粘贴
- c# - 试图在模板字段旁边添加下拉列表
- android - 如何将新材质BottomAppBar实现为BottomNavigationView
- javascript - for 循环和解构
- common-lisp - Error In = of (NIL 1) 参数的类型应为 NUMBER。通用 Lisp
- php - 如何在 Laravel 中对关系内部的项目进行分页?
- javascript - 为什么 javascript setInterval (updater) 交互 PHP fwrite 函数?