Как работают QuerySet в Django

Python Senior Без компании
Как работают QuerySet в Django
Ответы
QuerySet в Django — это лениво (lazy) оцениваемая коллекция объектов модели. Он не выполняет запрос к БД до тех пор, пока не будет явно запрошен результат (например, итерация, печать, вызов `list()` и т. д.). **Пример:** ``` # Запрос не выполняется сразу queryset = User.objects.filter(is_active=True) # Запрос выполняется только здесь (при итерации) for user in queryset: print(user.username) ``` **Ключевые особенности:** - **Цепочка методов:** Можно строить цепочки фильтров (`filter()`, `exclude()`), которые объединяются в один SQL-запрос. - **Кеширование:** При первом выполнении QuerySet кеширует результаты. - **Ленивость:** Запросы выполняются только при необходимости. - **Методы, вызывающие запрос:** `len()`, `list()`, `bool()`, итерация, срезы (`[5:10]`). **Пример с цепочкой:** ``` active_users = User.objects.filter(is_active=True).exclude(is_staff=True) ```