Как ограничить количество полей в queryset

Python Middle Без компании
Как ограничить количество полей в queryset
Ответы
Для ограничения количества полей в `QuerySet` можно использовать методы `values()` или `only()`. **1. `values()`** – возвращает словари вместо объектов модели, выбирая только указанные поля: ``` queryset = MyModel.objects.values('id', 'name') # Только id и name ``` **2. `only()`** – загружает указанные поля, остальные подгружаются лениво при обращении: ``` queryset = MyModel.objects.only('id', 'name') ``` **3. `defer()`** – исключает указанные поля (противоположность `only()`): ``` queryset = MyModel.objects.defer('description') # Все поля, кроме description ``` **Важно:** - `values()` уменьшает объем данных, но возвращает словари. - `only()` и `defer()` работают с объектами модели, но могут вызвать дополнительные запросы при обращении к отложенным полям. Пример с `only()`: ``` users = User.objects.only('username', 'email') for user in users: print(user.username) # Загружено сразу print(user.last_login) # Дополнительный запрос к БД ```