首頁 > 後端開發 > Python教學 > 如何使用 Django 的查詢集對資料進行分組?

如何使用 Django 的查詢集對資料進行分組?

DDD
發布: 2024-12-02 21:48:10
原創
638 人瀏覽過

How to Group Data Using Django's Querysets?

在 Django 查詢中將資料分組

在 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 文件:[Values]( https://docs.djangoproject.com/en/stable/ref/models/querysets /#values), [註](https://docs.djangoproject.com/en/stable/ref/models/querysets/#annotate),[計數](https://docs.djangoproject.com/en/stable/ref/models/ querysets/#django.db.models.Count)
  • Django 文件: [聚合](https://docs.djangoproject.com/en/stable/topics/db/aggregation/),特別是[與預設排序或order_by() 的互動](https://docs.djangoproject.com / en/stable/topics/db/aggregation/#interaction-with-default-ordering-or-orderby)

以上是如何使用 Django 的查詢集對資料進行分組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板