Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Menghimpunkan Hasil Pertanyaan dalam Django Tanpa Menggunakan group_by()?

Bagaimana untuk Menghimpunkan Hasil Pertanyaan dalam Django Tanpa Menggunakan group_by()?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-04 08:14:121014semak imbas

How to Group Query Results in Django Without Using group_by()?

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:

  • [Dokumentasi Django: values()](https://docs.djangoproject.com/en/stable/ref/models/querysets/#values)
  • [Django Documentation: annotate()](https://docs.djangoproject .com/ms/stable/ref/models/querysets/#annotate)
  • [Django Documentation: Count](https://docs.djangoproject.com/en/stable/ref/models/lookups/#count)

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!

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