Что такое 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 и связанных объектов.