📝 Django

Переопределение get_queryset в Django CBV

P
Автор
PyLand Team
📅
Опубликовано
30.06.2026
⏱️
Время чтения
1 мин
👁️
Просмотров
274
🌳
Уровень
Продвинутый

get_queryset() — метод для кастомизации набора данных в CBV.

Фильтрация по текущему пользователю

from django.views.generic import ListView
from django.contrib.auth.mixins import LoginRequiredMixin
from .models import Task

class MyTaskListView(LoginRequiredMixin, ListView):
    model = Task
    template_name = 'tasks/my_tasks.html'

    def get_queryset(self):
        return Task.objects.filter(owner=self.request.user)

Фильтрация из GET-параметров

class TaskListView(ListView):
    model = Task

    def get_queryset(self):
        qs = Task.objects.all()
        status = self.request.GET.get('status')
        if status:
            qs = qs.filter(status=status)
        q = self.request.GET.get('q')
        if q:
            qs = qs.filter(title__icontains=q)
        return qs.order_by('-created_at')

Зависимость от URL-параметров

# URL: /projects/<pk>/tasks/
class ProjectTaskListView(ListView):
    model = Task

    def get_queryset(self):
        project_pk = self.kwargs['pk']
        return Task.objects.filter(
            project__pk=project_pk,
            owner=self.request.user,
        )

DetailView — ограничение доступа

class TaskDetailView(LoginRequiredMixin, DetailView):
    model = Task

    def get_queryset(self):
        # 404 если задача не принадлежит пользователю
        return Task.objects.filter(owner=self.request.user)

vs get_context_data

Метод Цель
get_queryset() Определить набор объектов для отображения
get_context_data() Добавить дополнительные переменные в шаблон

get_queryset() запускается до get_context_data() — результат доступен через self.object_list или self.object.

Ваша реакция на статью

💬 Комментарии (0)

🔐 Войдите в систему, чтобы оставить комментарий
🚪 Войти
💭

Комментариев пока нет

Станьте первым, кто поделится мнением об этой статье!

🔗 Похожие

Похожие статьи

Продолжите изучение с этими материалами

📝

settings.py: настройки Django

settings.py — центральный конфигурационный файл Django-проекта.

📅 30.06.2026 👁️ 315
📝

DRF ViewSets и Роутеры

ViewSet — класс объединяющий несколько связанных view в один. Router автоматически генерирует URL.

📅 30.06.2026 👁️ 284
📝

Django: чеклист для продакшна

Перед публикацией Django-проекта проверь настройки безопасности, базы данных, статических файлов, HTTPS, логирования и резервного копирования.

📅 30.06.2026 👁️ 293
🎓 Продолжить обучение

В каких курсах используется этот материал

Перейдите к курсу, чтобы закрепить материал на практике.

Django RequestLab: от HTTP до безопасного продакшена Открыть программу курса