Django Academy · Aula

related_name e consultas reversas

Percorra relações nos dois sentidos

Aula 4 de 413 etapas

related_name e consultas reversas é uma aula grátis de Django Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Django Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Django Academy inclui 4 aulas no total.

Partes desta aula ainda não foram traduzidas e aparecem em inglês.

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

Grátis para começar

Aprenda Python com um tutor de IA — grátis

Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.

Cursos
30
Aulas
120

Perguntas Frequentes

A aula “related_name e consultas reversas” é grátis?

Sim — o texto completo de “related_name e consultas reversas” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Django Academy, atualize para CoddyKit PRO. O curso de Django Academy inclui 4 aulas no total.

O que vou aprender em “related_name e consultas reversas”?

Percorra relações nos dois sentidos Você pratica Django Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Django Academy?

Nenhuma experiência prévia é necessária. Django Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.

Quanto tempo leva a aula “related_name e consultas reversas”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Django Academy?

Sim. Cada aula de Django Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. ForeignKey e on_delete
  2. ManyToManyField e modelos intermediários
  3. OneToOneField para perfis
  4. related_name e consultas reversas
← Voltar para Django Academy