from django.db import models class Author(models.Model): name = models.CharField(max_length=100) def __str__(self): return self.name class Book(models.Model): title = models.CharField(max_length=100) author = models.ForeignKey(Author, on_delete=models.CASCADE, related_name='book_set') def __str__(self): return self.title
Here is how you can retrieve related models in Django ORM.
from myapp.models import Author, Book famous_author = Author.objects.get(name='J.K. Rowling')famous_books = famous_author.book_set.all()
this will execute the 2 queries to get the author and the books related to the author
If you want to reduce the number of queries you can use the prefetch_related method
prefetch_related
from myapp.models import Author, Book famous_author = Author.objects.prefetch_related('book_set').get(name='J.K. Rowling')famous_books = famous_author.book_set.all()