Django 中使用GROUP BY 進行查詢
在查詢資料庫模型時,經常需要將結果按特定欄位進行分組以獲得匯總資訊。在 Django 中,group_by 方法不直接支援此功能。但是,有多種方法可以在不修改 Django 程式碼庫的情況下實現類似的結果。
一種方法是利用 Django 的聚合功能。計數聚合器可用於計算以指定欄位分組的欄位出現次數。例如,按職稱對成員進行分組併計算每個職稱的出現次數:
from django.db.models import Count result = (Members.objects .values('designation') .annotate(dcount=Count('designation')) .order_by() )
此查詢生成的結果類似於:
[{'designation': 'Salesman', 'dcount': 2}, {'designation': 'Manager', 'dcount': 2}]
值中可以包含多個字段傳回附加資訊的參數。例如:
.values('designation', 'first_name', 'last_name')
Django 文件提供了有關 value()、annotate() 和 Count 構造的詳細資訊:
需要注意的是,排除order_by()參數可能會導致意想不到的結果,特別是如果預設排序行為不理想。
以上是如何在 Django 中不使用 group_by() 將查詢結果分組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!