Menyiasat dengan GROUP BY dalam Django
Apabila menanyakan model pangkalan data, selalunya perlu mengumpulkan hasil mengikut medan tertentu untuk mendapatkan maklumat agregat. Dalam Django, fungsi ini tidak disokong secara langsung oleh kaedah group_by. Walau bagaimanapun, terdapat pelbagai pendekatan untuk mencapai hasil yang serupa tanpa mengubah suai pangkalan kod Django.
Satu pendekatan ialah memanfaatkan ciri pengagregatan Django. Agregator Kira boleh digunakan untuk mengira bilangan kejadian medan, dikumpulkan mengikut medan tertentu. Contohnya, untuk mengumpulkan ahli mengikut sebutan mereka dan mengira kejadian setiap sebutan:
from django.db.models import Count result = (Members.objects .values('designation') .annotate(dcount=Count('designation')) .order_by() )
Pertanyaan ini menghasilkan hasil yang serupa dengan:
[{'designation': 'Salesman', 'dcount': 2}, {'designation': 'Manager', 'dcount': 2}]
Berbilang medan boleh dimasukkan dalam nilai hujah untuk mengembalikan maklumat tambahan. Contohnya:
.values('designation', 'first_name', 'last_name')
Dokumentasi Django menyediakan maklumat yang luas tentang nilai(), anotasi(), dan binaan Kira:
Adalah penting untuk ambil perhatian bahawa mengecualikan argumen order_by() boleh menyebabkan hasil yang tidak dijangka, terutamanya jika gelagat pengisihan lalai tidak diingini.
Atas ialah kandungan terperinci Bagaimana untuk Menghimpunkan Hasil Pertanyaan dalam Django Tanpa Menggunakan group_by()?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!