Встречается на 1% собеседований по Python
Какие возникали ошибки при использовании 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
интервью вопросы и ответы