Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk mengumpulkan data menggunakan set pertanyaan Django?

Bagaimana untuk mengumpulkan data menggunakan set pertanyaan Django?

DDD
DDDasal
2024-12-02 21:48:10664semak imbas

How to Group Data Using Django's Querysets?

Mengumpulkan Data dalam Pertanyaan Django

Dalam Django, pengambilan data daripada pangkalan data selalunya melibatkan penggunaan set pertanyaan. Set pertanyaan ini menyediakan pelbagai kaedah untuk menapis, memesan dan memanipulasi data. Satu operasi biasa ialah mengumpulkan data mengikut medan tertentu, serupa dengan klausa SQL GROUP BY.

Penggabungan untuk Pengumpulan

Untuk mengumpulkan data dalam Django, seseorang boleh menggunakan ciri pengagregatan ORM. Sebagai contoh, pertimbangkan pertanyaan berikut yang mendapatkan semula semua ahli:

Members.objects.all()

Pertanyaan ini mengembalikan senarai tupel, setiap tupel mewakili butiran ahli:

[('Eric', 'Salesman', 'X-Shop'),
 ('Freddie', 'Manager', 'X2-Shop'),
 ('Teddy', 'Salesman', 'X2-Shop'),
 ('Sean', 'Manager', 'X2-Shop')]

Untuk mengumpulkan hasil ini mengikut medan penetapan, seseorang boleh menggunakan kaedah values() dan annotate():

from django.db.models import Count

result = (
    Members.objects
    .values('designation')
    .annotate(dcount=Count('designation'))
    .order_by()
)

Pertanyaan ini menghasilkan pernyataan SQL yang serupa dengan:

SELECT designation, COUNT(designation) AS dcount
FROM members
GROUP BY designation

Hasilnya ialah senarai kamus, masing-masing mewakili sebutan dan kiraan ahli untuk sebutan itu:

[{'designation': 'Salesman', 'dcount': 2}, {'designation': 'Manager', 'dcount': 2}]

Untuk memasukkan berbilang medan dalam keputusan, hanya tambahkannya sebagai argumen kepada kaedah values(), seperti yang ditunjukkan di sini:

.values('designation', 'first_name', 'last_name')

Rujukan

Untuk mendapatkan maklumat lanjut tentang pengagregatan dan pengelompokan dalam Django, rujuk sumber berikut:

  • Dokumentasi Django: [Nilai]( https://docs.djangoproject.com/en/stable/ref/models/querysets/#values), [Annotate](https://docs.djangoproject.com/en/stable/ref/models/querysets/#annotate), [Count](https://docs.djangoproject.com/en/stable/ref/models/ querysets/#django.db.models.Count)
  • Dokumentasi Django: [Pengagregatan](https://docs.djangoproject.com/en/stable/topics/db/aggregation/), terutamanya bahagian tentang [Interaksi dengan Pesanan Lalai atau order_by()](https://docs.djangoproject.com /ms/stable/topics/db/aggregation/#interaction-with-default-ordering-or-orderby)

Atas ialah kandungan terperinci Bagaimana untuk mengumpulkan data menggunakan set pertanyaan Django?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn