Встречается на собеседованиях • сегодня

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

Для ограничения количества полей в QuerySet можно использовать методы values() или only().

1. values() – возвращает словари вместо объектов модели, выбирая только указанные поля:

python
queryset = MyModel.objects.values('id', 'name')  # Только id и name

2. 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)  # Дополнительный запрос к БД  
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы