Зачем нужны QuerySet в Django
Python
Senior
Без компании
Зачем нужны QuerySet в Django
Ответы
QuerySet в Django — это мощный инструмент для работы с базой данных, представляющий собой лениво оцениваемую коллекцию объектов модели. Он позволяет строить сложные SQL-запросы в декларативном стиле, не выполняя их до момента реального использования данных.
**Основные преимущества:**
- **Ленивая загрузка:** Запрос выполняется только при явном обращении к данным (итерация, срез, вызов `list()` и т.д.).
- **Цепочка методов:** Можно комбинировать фильтры (`filter()`), исключения (`exclude()`), сортировку (`order_by()`).
- **Оптимизация:** Использование `select_related()` и `prefetch_related()` для уменьшения количества запросов.
Пример:
```
# Запрос не выполняется сразу
qs = Book.objects.filter(author__name='Достоевский').exclude(year__lt=1860)
# Запрос выполнится только здесь
for book in qs:
print(book.title)
```
**Важно:** Каждый новый QuerySet создает новый запрос, а не модифицирует существующий.