Атрибут model
Атрибут model класса ListView указывает на модель Django,
из которой будут извлекаться объекты для отображения в виде списка.
Этот атрибут является обязательным, если не указан атрибут queryset.
При использовании model класс автоматически генерирует
QuerySet из всех записей указанной модели.
Синтаксис
from django.views.generic import ListView
from myapp.models import Article
class ArticleListView(ListView):
model = Article
Пример
Давайте создадим представление для вывода списка статей
с использованием атрибута model:
from 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 с пагинацией
для вывода статей постранично:
from 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
для удобной работы с данными в шаблоне:
from 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