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