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

Атрибут queryset

Атрибут queryset класса ListView позволяет явно указать, какой набор объектов должен быть передан в шаблон. В отличие от атрибута model, который автоматически получает все записи из модели, queryset дает возможность применить фильтрацию, сортировку или другие операции сразу на уровне определения класса. Если не задан ни queryset, ни model, представление вызовет ошибку.

Синтаксис

class MyListView(ListView): queryset = Model.objects.filter(condition)

Пример

Давайте создадим представление, которое выводит только опубликованные статьи:

from django.views.generic import ListView from myapp.models import Article class PublishedArticleListView(ListView): queryset = Article.objects.filter(status='published') context_object_name = 'articles' template_name = 'articles/list.html'

Результатом выполнения будет список статей, у которых поле 'status' равно 'published':

[<Article: Первая статья>, <Article: Вторая статья>, <Article: Третья статья>]

Пример

Давайте используем queryset для вывода последних 5 статей по дате создания:

from django.views.generic import ListView from myapp.models import Article class RecentArticleListView(ListView): queryset = Article.objects.order_by('-created_at')[:5] context_object_name = 'recent_articles' template_name = 'articles/recent_list.html'

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

[<Article: Последняя статья>, <Article: Предпоследняя статья>]

Пример

Давайте объединим queryset с пагинацией для вывода только активных пользователей по 10 записей на страницу:

from django.views.generic import ListView from myapp.models import User class ActiveUserListView(ListView): queryset = User.objects.filter(is_active=True) paginate_by = 10 context_object_name = 'users' template_name = 'users/list.html'

Результатом будет набор из 10 активных пользователей на первой странице:

[<User: user1>, <User: user2>, <User: user3>]

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

  • атрибут model,
    который задает модель для автоматической выборки всех записей
  • атрибут paginate_by,
    который включает пагинацию и задает количество объектов на странице
  • атрибут context_object_name,
    который задает имя переменной контекста для списка объектов
  • метод get_queryset,
    который позволяет динамически переопределять набор объектов
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить