related_name und umgekehrte Lookups
Beziehungen in beide Richtungen durchlaufen
related_name und umgekehrte Lookups ist eine kostenlose Django Academy-Lektion auf CoddyKit. Dies ist Lektion 4 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.
Links Go Both Ways
You set a ForeignKey from book to author, but you can also walk it backward. A reverse lookup reaches the many side from the one side.
The Default _set Manager
By default Django names the reverse accessor modelname_set. From an author, the books appear as book_set.
author = Author.objects.first()
author.book_set.all()_set Is a Manager
That book_set is a full manager, so you can chain filter, order_by, and count on it just like any query.
author.book_set.filter(published=True).count()Naming with related_name
The _set name is clunky. Set related_name on the ForeignKey to pick a clearer reverse accessor yourself.
author = models.ForeignKey(Author, related_name="books", on_delete=models.CASCADE)A Cleaner Reverse
Now the reverse reads naturally. Instead of book_set you simply write books, which is far easier to follow.
author.books.all()Reverse in Queries
related_name also drives filter across the link. Use the chosen name with the double underscore from the other model.
Author.objects.filter(books__published=True)The Default Query Name
If you skip related_name, the reverse query name is the lowercase model name, like author.objects.filter(book__title=...).
Avoiding Name Clashes
Two ForeignKeys from one model to the same target collide on the reverse name. A distinct related_name on each fixes it.
writer = models.ForeignKey(User, related_name="written", on_delete=models.CASCADE)
editor = models.ForeignKey(User, related_name="edited", on_delete=models.CASCADE)Turning Off the Reverse
Set related_name to a value ending in + to disable the reverse accessor entirely when you never need it.
owner = models.ForeignKey(User, related_name="+", on_delete=models.CASCADE)related_query_name
You can split the names: related_query_name sets the filter name separately from the attribute used to read related rows.
tags = models.ManyToManyField(Tag, related_name="posts", related_query_name="post")Works for Every Relation
related_name applies to ForeignKey, ManyToManyField, and OneToOneField alike, so every reverse path can read clearly.
Quick Check
You set related_name="books" on Book's author ForeignKey. How do you list an author's books?
Recap
You did it! Reverse lookups walk a link backward, and related_name turns clunky _set accessors into clear, readable names. 🔄
Häufig gestellte Fragen
Ist die Lektion „related_name und umgekehrte Lookups“ kostenlos?
Ja — der vollständige Text von „related_name und umgekehrte Lookups“ 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 „related_name und umgekehrte Lookups“?
Beziehungen in beide Richtungen durchlaufen 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 4 von 4.
Wie lange dauert die Lektion „related_name und umgekehrte Lookups“?
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
- ForeignKey und on_delete
- ManyToManyField und Through-Modelle
- OneToOneField für Profile
- related_name und umgekehrte Lookups