Какие методы 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) # Запрос выполнится
```