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.
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')
Untuk mendapatkan maklumat lanjut tentang pengagregatan dan pengelompokan dalam Django, rujuk sumber berikut:
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!