Встречается на 1% собеседований по Python
Какие знаешь способы оптимизации для получения данных через Django ORM
Используйте select_related() для ForeignKey и OneToOneField, чтобы уменьшить количество запросов при обращении к связанным объектам. Для ManyToManyField и обратных ForeignKey используйте prefetch_related(), который делает отдельный запрос для каждой связи.
Пример:
python
# Плохо: N+1 запрос
books = Book.objects.all()
for book in books:
print(book.author.name) # Новый запрос для каждого автора
Хорошо: 1 запрос
books = Book.objects.select_related('author').all()
text
Используйте `only()` и `defer()` для загрузки только нужных полей:
```python
# Загружаем только title и author_id
books = Book.objects.only('title', 'author')Для агрегации и аннотации применяйте annotate() и aggregate() вместо обработки в Python:
python
from django.db.models import Count
books = Book.objects.annotate(num_authors=Count('authors'))Используйте values() и values_list() для получения словарей/кортежей вместо полноценных объектов, если не нужны методы модели.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
Похожие вопросы
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы