0Pricing
Django Academy · Leçon

prefetch_related pour les relations plusieurs-à-plusieurs

Chargez efficacement les données plusieurs-à-plusieurs par lots.

prefetch_related pour les relations plusieurs-à-plusieurs est une leçon Django Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Django Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Django Academy comprend 4 leçons au total.

Certaines parties de cette leçon n'ont pas encore été traduites et s'affichent en anglais.

Meet prefetch_related

prefetch_related handles the relationships a join cannot, like many-to-many and reverse links, with smart batching. 📦

Two Queries, Not Many

Instead of one giant join, it runs a second query for the related rows, then matches them up in Python.

The Basic Call

Pass the relation name to prefetch_related, just like before, and Django batches the lookups for you automatically.

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

Why Two Beats N+1

One query for authors and one for all their books is two trips total, no matter how many authors you loop over.

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

Best for Many

Reach for it whenever each object links to multiple rows: many-to-many fields and reverse foreign keys are perfect fits.

Reverse Relations Work

It shines on reverse accessors, like an author reaching all their books, where select_related simply cannot help.

Mixing Both Tools

You can chain both optimizers on one queryset, using each for the relationship type it handles best.

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

Control with Prefetch

The Prefetch object lets you filter or order the related rows that get fetched, giving you fine control.

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

Done in Python

The matching happens in Python, not SQL. That is why it sidesteps the row explosion a big many-to-many join would cause.

Filter Inside the Loop Carefully

Calling filter on a prefetched set inside a loop fires fresh queries again. Use Prefetch to keep the batching benefit.

Two Tools, One Goal

select_related for single links, prefetch_related for many. Together they crush N+1 in almost any view. 🚀

Quick Check

Choose the right optimizer for this case.

Recap

prefetch_related batches many-to-many and reverse links into a second query, matched in Python. Pair it with select_related for full coverage. ✅

Questions Fréquemment Posées

La leçon « prefetch_related pour les relations plusieurs-à-plusieurs » est-elle gratuite ?

Oui — le texte complet de « prefetch_related pour les relations plusieurs-à-plusieurs » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Django Academy, passe à CoddyKit PRO. Le cours Django Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « prefetch_related pour les relations plusieurs-à-plusieurs » ?

Chargez efficacement les données plusieurs-à-plusieurs par lots. Tu pratiques Django Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Django Academy ?

Aucune expérience préalable n'est requise. Django Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.

Combien de temps prend la leçon « prefetch_related pour les relations plusieurs-à-plusieurs » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Django Academy ?

Oui. Chaque leçon Django Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Repérer le problème N+1
  2. select_related pour les clés étrangères
  3. prefetch_related pour les relations plusieurs-à-plusieurs
  4. Profilage avec la barre d’outils de débogage
← Retour à Django Academy