在 Django 中,從資料庫取得資料通常涉及使用查詢集。這些查詢集提供了各種用於過濾、排序和操作資料的方法。一個常見的操作是按特定欄位對資料進行分組,類似於 SQL GROUP BY 子句。
要在 Django 中將資料分組,可以利用 ORM 的聚合功能。例如,考慮以下檢索所有成員的查詢:
Members.objects.all()
此查詢返回一個元組列表,每個元組代表一個成員的詳細資訊:
[('Eric', 'Salesman', 'X-Shop'), ('Freddie', 'Manager', 'X2-Shop'), ('Teddy', 'Salesman', 'X2-Shop'), ('Sean', 'Manager', 'X2-Shop')]
對這些結果進行分組指定字段,可以使用values()和annotate()方法:
from django.db.models import Count result = ( Members.objects .values('designation') .annotate(dcount=Count('designation')) .order_by() )
此查詢產生一條S QL語句類似於:
SELECT designation, COUNT(designation) AS dcount FROM members GROUP BY designation
結果是一個字典列表,每個字典代表一個名稱和該名稱的成員數量:
[{'designation': 'Salesman', 'dcount': 2}, {'designation': 'Manager', 'dcount': 2}]
要在結果中包含多個字段,只需將它們作為參數添加到values()方法中,如圖所示這裡:
.values('designation', 'first_name', 'last_name')
有關Django 中聚合和分組的更多信息,請參閱以下資源:
以上是如何使用 Django 的查詢集對資料進行分組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!