Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimana untuk mengumpulkan data menggunakan set pertanyaan Django?

Bagaimana untuk mengumpulkan data menggunakan set pertanyaan Django?

DDD
Lepaskan: 2024-12-02 21:48:10
asal
661 orang telah melayarinya

How to Group Data Using Django's Querysets?

Mengumpulkan Data dalam Pertanyaan Django

Dalam Django, pengambilan data daripada pangkalan data selalunya melibatkan penggunaan set pertanyaan. Set pertanyaan ini menyediakan pelbagai kaedah untuk menapis, memesan dan memanipulasi data. Satu operasi biasa ialah mengumpulkan data mengikut medan tertentu, serupa dengan klausa SQL GROUP BY.

Penggabungan untuk Pengumpulan

Untuk mengumpulkan data dalam Django, seseorang boleh menggunakan ciri pengagregatan ORM. Sebagai contoh, pertimbangkan pertanyaan berikut yang mendapatkan semula semua ahli:

Members.objects.all()
Salin selepas log masuk

Pertanyaan ini mengembalikan senarai tupel, setiap tupel mewakili butiran ahli:

[('Eric', 'Salesman', 'X-Shop'),
 ('Freddie', 'Manager', 'X2-Shop'),
 ('Teddy', 'Salesman', 'X2-Shop'),
 ('Sean', 'Manager', 'X2-Shop')]
Salin selepas log masuk

Untuk mengumpulkan hasil ini mengikut medan penetapan, seseorang boleh menggunakan kaedah values() dan annotate():

from django.db.models import Count

result = (
    Members.objects
    .values('designation')
    .annotate(dcount=Count('designation'))
    .order_by()
)
Salin selepas log masuk

Pertanyaan ini menghasilkan pernyataan SQL yang serupa dengan:

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

Hasilnya ialah senarai kamus, masing-masing mewakili sebutan dan kiraan ahli untuk sebutan itu:

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

Untuk memasukkan berbilang medan dalam keputusan, hanya tambahkannya sebagai argumen kepada kaedah values(), seperti yang ditunjukkan di sini:

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

Rujukan

Untuk mendapatkan maklumat lanjut tentang pengagregatan dan pengelompokan dalam Django, rujuk sumber berikut:

  • Dokumentasi Django: [Nilai]( https://docs.djangoproject.com/en/stable/ref/models/querysets/#values), [Annotate](https://docs.djangoproject.com/en/stable/ref/models/querysets/#annotate), [Count](https://docs.djangoproject.com/en/stable/ref/models/ querysets/#django.db.models.Count)
  • Dokumentasi Django: [Pengagregatan](https://docs.djangoproject.com/en/stable/topics/db/aggregation/), terutamanya bahagian tentang [Interaksi dengan Pesanan Lalai atau order_by()](https://docs.djangoproject.com /ms/stable/topics/db/aggregation/#interaction-with-default-ordering-or-orderby)

Atas ialah kandungan terperinci Bagaimana untuk mengumpulkan data menggunakan set pertanyaan 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