Назад к задачамПолучайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Junior — Senior
5
Как избавиться от N+1 запросов в Django ORM
Компании, где спрашивали:
X5
Условие задачи
Требуется повысить эффективность запросов к базе, избегая лишних обращений к связанным моделям. В примере ниже показана простая схема с моделями Author и Book. Необходимо изменить логику так, чтобы при выводе имени автора книги не происходило отдельного запроса для каждой записи.
from django.db import models
class Author(models.Model):
name = models.CharField(max_length=255)
class Book(models.Model):
name = models.CharField(max_length=255)
author = models.ForeignKey(Author, on_delete=models.CASCADE, related_name='books')
price = models.IntegerField(default=100)
all_books = Book.objects.all()
# Фильтрация книг по авторам
author_1_books = all_books.filter(author_id=1)
author_2_books = all_books.filter(author_id=2)
for book in all_books:
print(book.author.name)