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

Как минимизировать количество запросов в связанной таблице

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

python
# select_related - для ForeignKey и OneToOne (JOIN в SQL)
queryset = Book.objects.select_related('author').all()  # 1 запрос вместо N+1

prefetch_related - для ManyToMany и обратных ForeignKey (отдельный запрос)

queryset = Author.objects.prefetch_related('books').all() # 2 запроса вместо N+1

text

Другие методы:
1. Используйте `annotate` для агрегации данных
2. Кэшируйте часто используемые данные
3. Применяйте `only()`/`defer()` для выбора конкретных полей
4. Для сложных случаев используйте `Prefetch` с кастомными QuerySet

Пример с Prefetch:
```python
from django.db.models import Prefetch

queryset = Author.objects.prefetch_related(
    Prefetch('books', queryset=Book.objects.filter(published=True))
)
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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