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

Метод get_queryset

Метод get_queryset применяется в классах представлений списка и возвращает объект QuerySet, содержащий записи, которые будут отображены на странице. По умолчанию он возвращает все объекты модели, указанной в атрибуте model или queryset. Метод можно переопределить для кастомизации выборки данных, включая фильтрацию, сортировку или дополнительную логику.

Синтаксис

from django.views.generic import ListView from myapp.models import Article class ArticleListView(ListView): model = Article def get_queryset(self): return super().get_queryset().filter(status='published')

Пример

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

from django.views.generic import ListView from myapp.models import Article class PublishedArticlesView(ListView): model = Article template_name = 'articles/published_list.html' context_object_name = 'articles' def get_queryset(self): return Article.objects.filter(status='published')

Пример

Давайте переопределим метод для сортировки статей по дате создания в обратном порядке:

from django.views.generic import ListView from myapp.models import Article class RecentArticlesView(ListView): model = Article template_name = 'articles/recent_list.html' context_object_name = 'recent_articles' def get_queryset(self): return Article.objects.order_by('-created_at')[:10]

Пример

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

from django.views.generic import ListView from myapp.models import Article class CategoryArticlesView(ListView): model = Article template_name = 'articles/category_list.html' context_object_name = 'articles' def get_queryset(self): queryset = super().get_queryset() category = self.request.GET.get('category') if category: queryset = queryset.filter(category__name=category) return queryset

Пример

Давайте реализуем поиск по названию статьи с использованием параметра запроса:

from django.views.generic import ListView from django.db.models import Q from myapp.models import Article class SearchArticlesView(ListView): model = Article template_name = 'articles/search_list.html' context_object_name = 'articles' def get_queryset(self): queryset = super().get_queryset() search_query = self.request.GET.get('search') if search_query: queryset = queryset.filter( Q(title__icontains=search_query) | Q(content__icontains=search_query) ) return queryset

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

  • класс ListView,
    который представляет список объектов
  • метод filter,
    который фильтрует QuerySet по заданным условиям
  • метод order_by,
    который сортирует QuerySet по указанным полям
  • метод exclude,
    который исключает записи из QuerySet
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить