Django Academy · Leçon

related_name et recherches inversées

Parcourez les relations dans les deux sens.

Leçon 4 sur 413 étapes

related_name et recherches inversées est une leçon Django Academy gratuite sur CoddyKit. Ceci est la leçon 4 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.

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. 🔄

Gratuit pour commencer

Apprends Python avec un tuteur IA — gratuit

Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.

Cours
30
Leçons
120

Questions Fréquemment Posées

La leçon « related_name et recherches inversées » est-elle gratuite ?

Oui — le texte complet de « related_name et recherches inversées » 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 « related_name et recherches inversées » ?

Parcourez les relations dans les deux sens. 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 4 sur 4.

Combien de temps prend la leçon « related_name et recherches inversées » ?

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. ForeignKey et on_delete
  2. ManyToManyField et modèles intermédiaires
  3. OneToOneField pour les profils
  4. related_name et recherches inversées
← Retour à Django Academy