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
Lepaskan: 2024-12-04 08:14:12
asal
1010 orang telah melayarinya

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

Pertanyaan ini menghasilkan hasil yang serupa dengan:

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

Berbilang medan boleh dimasukkan dalam nilai hujah untuk mengembalikan maklumat tambahan. Contohnya:

    .values('designation', 'first_name', 'last_name')
Salin selepas log masuk

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!

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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan