РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
67 of 818 menu

Метод values

Метод values применяется к QuerySet и возвращает новый QuerySet, который содержит не объекты модели, а словари. Ключи словарей - это имена полей, переданные в метод, а значения - соответствующие значения из базы данных. Если не передавать аргументы, метод вернёт все поля модели в виде словарей. Это полезно, когда нужно получить данные в формате, близком к JSON, или уменьшить нагрузку на память при работе с большим количеством объектов.

Синтаксис

Model.objects.values(*fields)

Метод принимает произвольное количество аргументов - имен полей модели. Если аргументы не указаны, возвращаются все поля.

Пример

Рассмотрим модель Article с полями title и content. Получим значения только этих полей:

from myapp.models import Article # Get values of 'title' and 'content' fields articles_data = Article.objects.values('title', 'content') for article_dict in articles_data: print(article_dict)

Результат выполнения кода:

{"title": "First Article", "content": "Content of first article"} {"title": "Second Article", "content": "Content of second article"}

Пример

Если вызвать values без аргументов, то будут получены все поля модели:

from myapp.models import Article # Get all fields as dictionaries all_data = Article.objects.values() for item in all_data: print(item)

Результат выполнения кода:

{"id": 1, "title": "First Article", "content": "Content of first article", "created_at": "2025-01-01T10:00:00Z"} {"id": 2, "title": "Second Article", "content": "Content of second article", "created_at": "2025-01-02T12:30:00Z"}

Пример

Метод values можно комбинировать с фильтрацией и агрегацией. Например, получим только заголовки опубликованных статей:

from myapp.models import Article # Filter published articles and get only titles published_titles = Article.objects.filter(status='published').values('title') for title_dict in published_titles: print(title_dict)

Результат выполнения кода:

{"title": "First Article"} {"title": "Third Article"}

Смотрите также

  • метод values_list,
    который возвращает кортежи значений вместо словарей
  • метод only,
    который загружает только указанные поля в объекты
  • метод defer,
    который откладывает загрузку указанных полей
  • метод annotate,
    который добавляет аннотированные поля в QuerySet
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить