aggregate vs annotate
Ringkas seluruh queryset atau setiap baris
aggregate vs annotate adalah pelajaran Django Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Django Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Django Academy mencakup 4 pelajaran total.
Dua Cara untuk Meringkas
ORM menyediakan dua alat ringkasan: aggregate meringkas seluruh kumpulan kueri menjadi satu hasil, sedangkan annotate menambahkan nilai ke setiap baris.
Hasil yang Dikembalikan aggregate
Pemanggilan aggregate mengakhiri kueri dan memberikan kamus Python biasa, bukan kumpulan kueri, sehingga tidak ada lagi yang dapat disaring setelahnya.
from django.db.models import Avg
Book.objects.aggregate(Avg("price"))
# {"price__avg": 24.5}Memberi Nama pada Hasil
Berikan kata kunci kepada aggregate untuk menentukan sendiri nama kunci keluaran, yang jauh lebih mudah dibaca daripada label price__avg yang dibuat otomatis.
Book.objects.aggregate(avg_price=Avg("price"))
# {"avg_price": 24.5}Fungsi Aggregate yang Umum
Anda mendapatkan perangkat SQL yang umum: Count, Sum, Avg, Min, dan Max. Masing-masing meringkas seluruh kumpulan kueri menjadi satu angka.
from django.db.models import Count, Sum
Book.objects.aggregate(total=Count("id"), revenue=Sum("price"))Hasil yang Dikembalikan annotate
Sebaliknya, annotate mengembalikan kumpulan kueri yang setiap objeknya membawa atribut terhitung baru, sehingga Anda tetap dapat melakukan penyaringan dan pengurutan.
Penghitungan per Baris
Gunakan annotate dengan penghitungan relasi untuk menjawab pertanyaan per objek, misalnya berapa banyak buku yang ditulis setiap penulis.
Author.objects.annotate(num_books=Count("book"))
# each author now has .num_booksGROUP BY Terjadi Secara Otomatis
Saat Anda menggunakan annotate pada suatu relasi, Django menambahkan klausa GROUP BY secara otomatis dan mengelompokkan berdasarkan model awal Anda.
Menyaring berdasarkan Anotasi
Karena annotate mempertahankan kumpulan kueri, Anda dapat melakukan filter berdasarkan nilai baru tersebut, misalnya untuk menemukan penulis yang memiliki lebih dari lima buku.
Author.objects.annotate(n=Count("book")).filter(n__gt=5)Mengurutkan berdasarkan Anotasi
Anda juga dapat menggunakan order_by pada nilai terhitung, sehingga mengurutkan penulis yang paling produktif hanya memerlukan satu baris kueri.
Author.objects.annotate(n=Count("book")).order_by("-n")Menyaring Sebelum Membuat Anotasi
Urutan penting: filter sebelum annotate mempersempit baris yang dihitung, sedangkan filter setelahnya menguji hasil yang telah dihitung.
Pilih Alat yang Tepat
Ajukan satu pertanyaan: apakah Anda menginginkan ringkasan tunggal untuk seluruh kumpulan, atau satu nilai per objek? Pilihan itu menentukan penggunaan aggregate atau annotate.
Pemeriksaan Singkat
Anda ingin jumlah buku setiap penulis, dengan hasil tetap berupa kumpulan kueri yang masih dapat diurutkan. Pemanggilan mana yang tepat?
Rangkuman
Ingat perbedaannya: aggregate mengembalikan satu kamus ringkasan dan mengakhiri kueri, sedangkan annotate menambahkan nilai per baris dan mempertahankan kumpulan kueri yang dapat Anda saring serta urutkan. 🎯
Pertanyaan yang Sering Diajukan
Apakah pelajaran “aggregate vs annotate” gratis?
Ya — teks lengkap “aggregate vs annotate” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Django Academy, upgrade ke CoddyKit PRO. Kursus Django Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “aggregate vs annotate”?
Ringkas seluruh queryset atau setiap baris Kamu berlatih Django Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Django Academy?
Tidak diperlukan pengalaman sebelumnya. Django Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “aggregate vs annotate” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Django Academy ini?
Ya. Setiap pelajaran Django Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- aggregate vs annotate
- Ekspresi F untuk Pembaruan Atomik
- Objek Q untuk Filter Kompleks
- Agregasi Kondisional dengan Case/When