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

Метод values_list

Метод values_list применяется к QuerySet и возвращает новый QuerySet, который содержит кортежи с значениями указанных полей модели. В отличие от метода values, который возвращает словари, values_list возвращает кортежи, что позволяет экономить память и ускоряет обработку данных при работе с большими наборами записей. Метод принимает имена полей в качестве аргументов и может быть использован для извлечения конкретных данных из базы данных без создания экземпляров моделей.

Синтаксис

Model.objects.values_list(*fields, flat=False, named=False)

Пример . С одним полем

Получим список названий всех статей:

from myapp.models import Article titles = Article.objects.values_list('title') for title in titles: print(title)

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

("Article 1",) ("Article 2",) ("Article 3",)

Пример . С параметром flat

Для получения плоского списка значений при выборке одного поля используйте параметр flat=True:

from myapp.models import Article titles = Article.objects.values_list('title', flat=True) for title in titles: print(title)

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

"Article 1" "Article 2" "Article 3"

Пример . С несколькими полями

Получим кортежи с названиями и статусами статей:

from myapp.models import Article articles_data = Article.objects.values_list('title', 'status') for title, status in articles_data: print(f"Title: {title}, Status: {status}")

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

"Title: Article 1, Status: published" "Title: Article 2, Status: draft" "Title: Article 3, Status: published"

Пример . С named=True

Используйте параметр named=True для получения именованных кортежей, что упрощает доступ к полям по имени:

from myapp.models import Article articles = Article.objects.values_list('title', 'status', named=True) for article in articles: print(article.title, article.status)

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

"Article 1 published" "Article 2 draft" "Article 3 published"

Пример . С полями связанной модели

Метод values_list поддерживает обращение к полям связанных моделей через двойное подчеркивание:

from myapp.models import Article article_users = Article.objects.values_list('title', 'author__username') for title, username in article_users: print(f"Article: {title}, Author: {username}")

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

"Article: Article 1, Author: john_doe" "Article: Article 2, Author: jane_smith" "Article: Article 3, Author: john_doe"

Пример . С фильтрацией

Метод values_list можно комбинировать с методом filter для выборки конкретных данных:

from myapp.models import Article published_titles = Article.objects.filter(status='published').values_list('title', flat=True) for title in published_titles: print(title)

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

"Article 1" "Article 3"

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

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