Django Academy · Pelajaran

prefetch_related untuk M2M

Muatkan data banyak-ke-banyak secara berkumpulan dengan cekap.

Pelajaran 3 daripada 413 langkah

prefetch_related untuk M2M ialah pelajaran Django Academy percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Django Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Django Academy merangkumi sejumlah 4 pelajaran.

Kenali prefetch_related

prefetch_related mengendalikan hubungan yang tidak boleh dicantumkan, seperti banyak-ke-banyak dan hubungan songsang, dengan pengumpulan pintar. 📦

Dua Pertanyaan, Bukan Banyak

Daripada satu cantuman besar, ia menjalankan pertanyaan kedua untuk baris berkaitan, kemudian memadankannya dalam Python.

Panggilan Asas

Hantarkan nama hubungan kepada prefetch_related, seperti sebelum ini, dan Django mengumpulkan carian untuk anda secara automatik.

authors = Author.objects.prefetch_related('books')

Mengapa Dua Lebih Baik daripada N+1

Satu pertanyaan untuk pengarang dan satu pertanyaan untuk semua buku mereka bermakna dua perjalanan keseluruhannya, tidak kira berapa banyak pengarang yang anda ulang.

for author in authors:
    print(author.books.count())

Terbaik untuk Banyak Baris

Gunakannya apabila setiap objek dipautkan kepada berbilang baris: medan banyak-ke-banyak dan kunci asing songsang amat sesuai.

Hubungan Songsang Berfungsi

Ia amat berguna untuk pengakses songsang, seperti pengarang mendapatkan semua bukunya, yang tidak dapat dibantu oleh select_related.

Menggabungkan Kedua-dua Alat

Anda boleh merantaikan kedua-dua pengoptimum pada satu queryset, menggunakan setiap satunya untuk jenis hubungan yang paling sesuai dikendalikannya.

Book.objects.select_related('author').prefetch_related('tags')

Kawal dengan Prefetch

Objek Prefetch membolehkan anda menapis atau mengisih baris berkaitan yang diambil, lalu memberikan kawalan terperinci.

from django.db.models import Prefetch
Author.objects.prefetch_related(
  Prefetch('books', queryset=Book.objects.filter(year=2024)))

Selesai dalam Python

Pemadanan berlaku dalam Python, bukan SQL. Itulah sebabnya kaedah ini mengelakkan ledakan baris yang akan disebabkan oleh cantuman banyak-ke-banyak yang besar.

Tapis dalam Gelung dengan Berhati-hati

Memanggil filter pada set yang telah dibuat praambil di dalam gelung akan mencetuskan pertanyaan baharu sekali lagi. Gunakan Prefetch untuk mengekalkan manfaat pengumpulan kelompok.

Dua Alat, Satu Matlamat

select_related untuk pautan tunggal, prefetch_related untuk pautan berbilang. Bersama-sama, kedua-duanya menghapuskan masalah N+1 dalam hampir semua paparan. 🚀

Semakan Pantas

Pilih pengoptimum yang sesuai untuk kes ini.

Imbas Kembali

prefetch_related mengumpulkan hubungan banyak-ke-banyak dan pautan songsang ke dalam pertanyaan kedua, kemudian memadankannya dalam Python. Gabungkan dengan select_related untuk liputan menyeluruh. ✅

Percuma untuk bermula

Pelajari Python dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
30
Pelajaran
120

Soalan Lazim

Adakah pelajaran “prefetch_related untuk M2M” percuma?

Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Django Academy, termasuk “prefetch_related untuk M2M”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Django Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “prefetch_related untuk M2M”?

Muatkan data banyak-ke-banyak secara berkumpulan dengan cekap. Anda berlatih Django Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Django Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Django Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.

Berapa lamakah pelajaran “prefetch_related untuk M2M” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Django Academy ini?

Ya. Setiap pelajaran Django Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Mengesan Masalah N+1
  2. select_related untuk ForeignKey
  3. prefetch_related untuk M2M
  4. Pemprofilan dengan Bar Alat Nyahpepijat
← Kembali ke Django Academy