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