Конвертация наборов необработанных SQL в Django ORM - PullRequest
0 голосов
/ 02 мая 2020

Здесь у меня есть набор запросов, где я использую raw SQL для получения данных.

Но этот подход не соответствует моим требованиям.

Я хочу преобразовать этот запрос в чистый Django ORM query

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;")

Как я могу это сделать?

КАК МЫ МОЖЕМ РЕАЛИЗОВАТЬ считать (отличный ra, категория) как 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 из-за этого необходимости вычисления для других значений атрибута ... as order_type = Count ('ra' , 'категория', отличная = True) выдает ошибку

...