'state'라는 필드가있는 모델이 있습니다. 'completed', 'in_progress', 'failed', 'created'와 같은 값을가집니다. 나는 테이블에 대해 나에게필드 값의 수를 명확하게 나열하는 장고 쿼리
{'completed': 2, 'in_progress': 5, 'failed': 0, 'created': 2}
같은 목록을 통해하는 장고 쿼리를 작성할 수 있다면 내가
id | order_id | state
---------------------------
1 | 23 | completed
2 | 23 | completed
3 | 23 | in_progress
4 | 23 | created
5 | 23 | created
6 | 23 | in_progress
7 | 23 | in_progress
8 | 23 | in_progress
9 | 23 | in_progress
나는 아래의 쿼리를 실행하려고
가치를 알 필요가
order_items = OrderItems.objects.filter(order=order)
order_states = order_items.filter(
state__in=['in_progress', 'completed', 'failed', 'created']
).values('state').annotate(Count('state'))
그러나 그것은 나에게 이런 식으로 생긴 명단을 주었다.
[{'state': u'completed', 'state__count': 8},
{'state': u'failed', 'state__count': 1},
{'state': u'in_progress', 'state__count': 1}]
원하는 출력이 목록이 아닙니다, 그것은 사전입니다. 지금까지 내가 아는 모든 장고 쿼리는 반복 가능한 구조의 일부 형식을 반환합니다. 일반적으로 쿼리 집합은 사전 목록이나 쿼리 대상 모델 인스턴스와 매우 유사합니다. 결과 목록을 반복하고 원하는 사전을 만들 수 있지만 비효율적 인 데이터 세트 크기에 따라 달라질 수 있습니다. – Neelik
네, 데이터 크기가 커질 것이므로 루핑을 피할 수있게 해주는 쿼리 세트가 필요했습니다. –