Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Melakukan Kumpulan Mengikut Pertanyaan dalam Django?

Bagaimanakah Saya Melakukan Kumpulan Mengikut Pertanyaan dalam Django?

DDD
DDDasal
2024-12-05 18:07:10236semak imbas

How Do I Perform Group By Queries in Django?

Kumpulkan Mengikut Pertanyaan dalam Django

Latar Belakang

Apabila menanyakan model Django, anda mungkin menghadapi senario di mana anda perlu melaksanakan kumpulan mengikut operasi . Percubaan untuk menggunakan .group_by() seperti yang anda lakukan dalam SQL mengakibatkan ralat.

Ciri Pengagregatan

Daripada menggunakan .group_by(), Django menyediakan kaedah pengagregatan yang membolehkan anda melakukan pertanyaan kompleks melibatkan kumpulan. Khususnya, Count berguna untuk mengira kejadian medan tertentu.

Contoh

Untuk mengumpulkan hasil mengikut penetapan dan mengira kejadian, anda akan menggunakan kod berikut:

from django.db.models import Count

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

Pertanyaan ini serupa dengan pernyataan SQL berikut:

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

Output Django pertanyaan adalah dalam bentuk:

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

Nota Tambahan

  • Sertakan order_by() untuk memastikan pengisihan yang betul.
  • Untuk memasukkan berbilang medan dalam hasil, berikannya sebagai argumen kepada .values().
  • Rujuk dokumentasi Django tentang values(), annotate(), dan Count untuk mendapatkan maklumat lanjut.

Atas ialah kandungan terperinci Bagaimanakah Saya Melakukan Kumpulan Mengikut Pertanyaan dalam 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