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

Атрибут list_display

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

Синтаксис

from django.contrib import admin from .models import Article @admin.register(Article) class ArticleAdmin(admin.ModelAdmin): list_display = ['field1', 'field2', 'method_name']

Пример

Давайте создадим модель Article и настроим административную панель для отображения полей title, author и created_at в списке объектов:

from django.db import models class Article(models.Model): title = models.CharField(max_length=100) author = models.CharField(max_length=50) created_at = models.DateTimeField(auto_now_add=True) status = models.CharField(max_length=20) def __str__(self): return self.title
from django.contrib import admin from .models import Article @admin.register(Article) class ArticleAdmin(admin.ModelAdmin): list_display = ['title', 'author', 'created_at']

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

"В списке объектов будут показаны колонки: title, author, created_at"

Пример

Давайте используем метод модели в атрибуте list_display для отображения пользовательского форматирования:

from django.db import models class Article(models.Model): title = models.CharField(max_length=100) content = models.TextField() is_published = models.BooleanField(default=False) def status_display(self): return "Published" if self.is_published else "Draft" status_display.short_description = "Status" def __str__(self): return self.title
from django.contrib import admin from .models import Article @admin.register(Article) class ArticleAdmin(admin.ModelAdmin): list_display = ['title', 'status_display', 'is_published']

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

"Вместо булевого значения будет отображаться текст: Published или Draft"

Пример

Давайте используем вызываемый объект с декоратором admin.display для управления отображением поля в административной панели:

from django.contrib import admin from django.db import models class Article(models.Model): title = models.CharField(max_length=100) price = models.DecimalField(max_digits=10, decimal_places=2) def __str__(self): return self.title
from django.contrib import admin from .models import Article @admin.register(Article) class ArticleAdmin(admin.ModelAdmin): list_display = ['title', 'price_with_currency'] @admin.display(description='Price with currency') def price_with_currency(self, obj): return f"${obj.price}"

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

"В столбце price_with_currency будет отображаться цена с символом доллара: $99.99"

Пример

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

from django.db import models class Category(models.Model): name = models.CharField(max_length=50) def __str__(self): return self.name class Article(models.Model): title = models.CharField(max_length=100) category = models.ForeignKey(Category, on_delete=models.CASCADE) def __str__(self): return self.title
from django.contrib import admin from .models import Article, Category @admin.register(Article) class ArticleAdmin(admin.ModelAdmin): list_display = ['title', 'category__name', 'id']

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

"Вместо идентификатора категории будет отображаться её название: category__name"

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

  • атрибут list_filter,
    который добавляет фильтры для списка объектов в админке
  • атрибут search_fields,
    который добавляет поле поиска для списка объектов
  • декоратор admin.display,
    который используется для настройки отображения методов в админке
  • атрибут list_editable,
    который позволяет редактировать поля прямо в списке объектов
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить