prefetch_related für M2M
Many-to-many-Daten effizient gesammelt laden
prefetch_related für M2M ist eine kostenlose Django Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Django Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Django Academy-Kurs umfasst insgesamt 4 Lektionen.
Teile dieser Lektion wurden noch nicht übersetzt und werden auf Englisch angezeigt.
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. ✅
Lerne Python mit einem KI-Tutor — kostenlos
Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.
- Kurse
- 30
- Lektionen
- 120
Häufig gestellte Fragen
Ist die Lektion „prefetch_related für M2M“ kostenlos?
Ja — der vollständige Text von „prefetch_related für M2M“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Django Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Django Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „prefetch_related für M2M“?
Many-to-many-Daten effizient gesammelt laden Du übst Django Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Django Academy zu starten?
Keine Vorkenntnisse erforderlich. Django Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.
Wie lange dauert die Lektion „prefetch_related für M2M“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Django Academy-Lektion Code schreiben und ausführen?
Ja. Jede Django Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Das N+1-Problem erkennen
- select_related für Foreign Keys
- prefetch_related für M2M
- Profiling mit der Debug Toolbar