Атрибут model

Атрибут model класса ListView указывает на модель Django, из которой будут извлекаться объекты для отображения в виде списка. Этот атрибут является обязательным, если не указан атрибут queryset. При использовании model класс автоматически генерирует QuerySet из всех записей указанной модели.

Синтаксис

pythonfrom django.views.generic import ListView
from myapp.models import Article

class ArticleListView(ListView):
  model = Article

Пример

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

pythonfrom django.views.generic import ListView
from myapp.models import Article

class ArticleListView(ListView):
  model = Article
  template_name = "articles/list.html"
  context_object_name = "articles"

В этом примере представление ArticleListView использует атрибут model для получения всех записей модели Article. Результат будет передан в шаблон под именем articles.

Пример

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

pythonfrom django.views.generic import ListView
from myapp.models import Article

class ArticleListView(ListView):
  model = Article
  template_name = "articles/list.html"
  context_object_name = "articles"
  paginate_by = 10

В этом примере атрибут paginate_by указывает, что на одной странице должно отображаться по 10 статей. Атрибут model автоматически предоставляет QuerySet для пагинации.

Пример

Давайте переопределим атрибут context_object_name для удобной работы с данными в шаблоне:

pythonfrom django.views.generic import ListView
from myapp.models import Category

class CategoryListView(ListView):
  model = Category
  template_name = "categories/list.html"
  context_object_name = "categories"

В этом примере список категорий будет передан в шаблон под именем categories. Если не указать атрибут context_object_name, то по умолчанию будет использовано имя object_list.

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

  • атрибут queryset,
    который позволяет задать произвольный QuerySet
  • атрибут paginate_by,
    который определяет количество объектов на странице
  • атрибут context_object_name,
    который задает имя переменной в шаблоне
  • метод get_queryset,
    который переопределяет получение QuerySet