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

Bagaimanakah Saya Melakukan Kumpulan Mengikut Pertanyaan dalam Django?

DDD
Lepaskan: 2024-12-05 18:07:10
asal
234 orang telah melayarinya

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()
)
Salin selepas log masuk

Pertanyaan ini serupa dengan pernyataan SQL berikut:

SELECT designation, COUNT(designation) AS dcount
FROM members GROUP BY designation
Salin selepas log masuk

Output Django pertanyaan adalah dalam bentuk:

[{'designation': 'Salesman', 'dcount': 2}, 
 {'designation': 'Manager', 'dcount': 2}]
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan