Какие методы QuerySet отправляют запросы к БД

Python Middle Без компании
Какие методы QuerySet отправляют запросы к БД
Ответы
QuerySet в Django ленив — запросы к БД выполняются только при явном вызове методов, требующих данных. Основные методы, вызывающие запрос: **1. Итерация** ``` for obj in MyModel.objects.all(): # Запрос выполняется здесь print(obj) ``` **2. Срезы с шагом** ``` qs = MyModel.objects.all()[5:10] # Ленивый (не выполняется) qs = MyModel.objects.all()[5:10:2] # Выполняется (шаг) ``` **3. Методы оценки** - `list(qs)` - `bool(qs)` (если QuerySet пуст) - `len(qs)` (если не использовать `count()`) - `qs.exists()` **4. Методы агрегации** - `qs.count()` - `qs.aggregate()` - `qs.get()`, `qs.first()`, `qs.last()` **5. Сериализация** - `repr(qs)` (в консоли Django) - `str(qs.query)` Пример: ``` qs = MyModel.objects.filter(name__startswith='A') # Нет запроса print(qs) # Запрос выполнится ```