我試圖限制在頁面上執行的查詢數。查詢集返回在過去24小時內創建的對象。然後我想過濾該查詢集來根據字段計算對象。Django:篩選查詢集然後計數
實施例:
cars = self.get_queryset()
volvos_count = cars.filter(brand="Volvo").count()
mercs_count = cars.filter(brand="Merc").count()
隨着越來越多的品牌(在該示例中),查詢的數量與必須被查詢品牌的數量線性增長。
如何爲汽車進行單一查詢,以便返回品牌的所有唯一值的字典和查詢集中實例的數量?
結果:
{'volvos': 4, 'mercs': 50, ...}
謝謝!
編輯:
的意見,到目前爲止,他們已經接近,但不太上的標記。使用values_list('brand',flat = True)將返回品牌。從那裏,你可以使用
from collections import Counter
要返回的總數。如果有一種方法可以從單個查詢中完成,但這可能是不可能的。
是接近的,好像做到這一點的一種方式就是queryset.values_list(「品牌」,扁= TRUE),然後用計數器結果。這將返回我正在查找的值和計數。 – Emile
使用計數器確實可以工作 - 但是一旦您開始獲得大量結果,會非常慢。這種工作更適合於數據庫。 – Shadow