Встречается на собеседованиях • сегодня

Каким образом оптимизируешь запросы к связанным моделям

Для оптимизации запросов к связанным моделям в Django используем select_related и prefetch_related:

  1. select_related - для ForeignKey и OneToOne (SQL JOIN)
python
# Загружает связанные объекты одним запросом
books = Book.objects.select_related('author').all()
  1. prefetch_related - для ManyToMany и обратных ForeignKey (отдельные запросы)
python
# Делает 2 запроса: для книг и их жанров
books = Book.objects.prefetch_related('genres').all()
  1. Для сложных случаев - Prefetch:
python
from django.db.models import Prefetch
authors = Author.objects.prefetch_related(
    Prefetch('books', queryset=Book.objects.filter(is_published=True))
)
  1. Используем only() и defer() для выбора конкретных полей:
python
books = Book.objects.select_related('author').only('title', 'author__name')
  1. Для аннотаций и агрегаций - annotate():
python
from django.db.models import Count
authors = Author.objects.annotate(book_count=Count('books'))
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы