Встречается на собеседованиях • сегодня
Какие возникали ошибки при использовании Django ORM
Распространённые ошибки в Django ORM:
- N+1 проблема - когда для каждого объекта делается отдельный запрос к связанной таблице. Решается
select_related()(ForeignKey) илиprefetch_related()(ManyToMany).
python
# Плохо (N+1 запросов)
books = Book.objects.all()
for book in books:
print(book.author.name) # Новый запрос для каждого автора
Хорошо (1 запрос)
books = Book.objects.select_related('author').all()
text
2. **Использование `filter()` вместо `get()` для одного объекта** - `filter()` возвращает QuerySet, даже если объект один. Для одного объекта лучше `get()`.
3. **Неэффективные массовые операции** - создание объектов в цикле вместо `bulk_create()`.
4. **Ошибки с `null` и `blank`** - путаница между этими параметрами моделей. `null` - для БД, `blank` - для валидации форм.
5. **Игнорирование `transaction.atomic()`** - приводит к частичным обновлениям при ошибках.
6. **Использование `len(queryset)` вместо `queryset.count()`** - `len()` загружает все объекты в память.
7. **Забывают про `only()` и `defer()`** - загрузка всех полей, когда нужны только некоторые.
8. **Неправильное использование `Q()` объектов** - сложные запросы могут генерировать неоптимальный SQL.
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы