Что такое QuerySet в Django
Python
Senior
Без компании
Что такое QuerySet в Django
Ответы
QuerySet в Django — это лениво оцениваемая (lazy) коллекция объектов модели, представляющая набор записей из базы данных. Он позволяет строить сложные запросы к БД, объединяя методы фильтрации, сортировки и агрегации, без немедленного выполнения запроса.
**Ключевые особенности:**
- Ленивая загрузка: запрос выполняется только при явном обращении к данным (итерация, срез, вызов `list()` и т.д.).
- Цепочка методов: методы (`filter()`, `exclude()`, `order_by()`) можно объединять.
- Неизменяемость: каждый метод возвращает новый QuerySet.
**Пример:**
```
# Создание QuerySet (запрос еще не выполнен)
books = Book.objects.filter(author='Достоевский').order_by('-published_date')
# Запрос выполнится при итерации
for book in books:
print(book.title)
# Или при явном преобразовании
book_list = list(books)
```
**Методы:**
- `filter()` / `exclude()` — условия WHERE.
- `annotate()` — добавление вычисляемых полей.
- `select_related()` / `prefetch_related()` — оптимизация JOIN и связанных объектов.