0Pricing
Django Academy · Lektion

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

  1. ForeignKey und on_delete
  2. ManyToManyField und Through-Modelle
  3. OneToOneField für Profile
  4. related_name und umgekehrte Lookups
← Zurück zu Django Academy