我有一個模型,它有一個名爲'狀態'的字段。它具有像'完成','in_progress','失敗','創建'的值。我需要知道,如果我能寫,這將通過我喜歡Django查詢明確列出字段值的計數
{'completed': 2, 'in_progress': 5, 'failed': 0, 'created': 2}
列表爲表Django的查詢值
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}]
你所需的輸出是不是列表,它是一本字典。就我所知,所有的Django查詢都會返回某種形式的可迭代結構,通常是一個QuerySet,它的行爲非常像字典列表,或者被查詢的模型實例。您可以遍歷結果列表並創建所需的字典,但取決於可能效率低下的數據集大小。 – Neelik
是的,這就是我需要一個能夠避免循環的查詢集的原因,因爲數據量將會很大 –