0

在这里,我有一个查询集,我在其中使用原始 SQL 来获取数据。

但是这种方法不能满足我的要求。

我想将此查询转换为纯Django ORM查询

queryset = Model.objects.raw("select id,category,count(category) 
as total_orders, count(distinct ra, category) as order_type, 
SUM(CASE WHEN service_status = 'success' THEN 1 ELSE 0 END) as total_success_order, 
SUM(CASE WHEN service_status = 'failed' THEN 1 ELSE 0 END) as total_failed_order 
from table 
group by ra;")

我怎样才能做到这一点?

我们如何在查询集中将 count(distinct ra, category) 实现为 order_type?

我的方法

  queryset = Model.objects.values('ra').annotate(category=F('category'),\
order_type=Count('ra', 'category', distinct=True),total_orders=Count('category'),\
total_success_order=Count('service_status', filter=Q(service_status='success')),\
total_failed_order=Count('service_status', filter=Q(service_status='failed'))).order_by()

问题是如何获得 order_type 因为需要计算其他属性值......因为order_type=Count('ra', 'category', distinct=True) 给出错误

4

0 回答 0