Использование list_display в Django Admin

Использование list_display в Django Admin

Мое погружение в веб-разработку с использованием Django привело меня к увлекательному открытию функционала под названием list_display в административной панели Django.

Я хочу поделиться с вами своим опытом использования этого мощного инструмента на примере модели Vegetable с полями name, weight и expire_date.

Создание Модели Vegetable

Давайте начнем с создания простой модели Vegetable в файле models.py:

from django.db import models
from django.utils import timezone

class Vegetable(models.Model):
    name = models.CharField(max_length=50)
    weight = models.DecimalField(max_digits=5, decimal_places=2)
    expire_date = models.DateField(default=timezone.now)

Активация Административной Панели

После создания модели настало время внедрить ее в административную панель Django. В файле admin.py:

from django.contrib import admin
from .models import Vegetable

@admin.register(Vegetable)
class VegetableAdmin(admin.ModelAdmin):
    list_display = ('name', 'weight', 'expire_date')

Разбор list_display

list_display — это атрибут класса, который дает возможность определить, какие поля модели будут отображаться в списке объектов в административной панели. В данном примере были выбраны три поля: ‘name’, ‘weight’ и ‘expire_date’.
Интерактивное Использование

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

    Name: Картошка
    Weight: 1.2 кг
    Expire Date: 2024-04-20

Это намного удобнее, чем рассматривать каждый объект отдельно.

Персонализация отображения

Однако list_display не ограничивается простым перечислением полей. Вы можете включить методы модели, свойства и даже функции в list_display, чтобы сделать вывод более информативным. Для примера, создадим метод в модели Vegetable для проверки просроченности:

class Vegetable(models.Model):
    # ... (предыдущий код)

    def is_expired(self):
        return self.expire_date < timezone.now().date()

    is_expired.boolean = True
    is_expired.short_description = 'Expired'

Теперь вы можете добавить is_expired в list_display:

class VegetableAdmin(admin.ModelAdmin):
    list_display = ('name', 'weight', 'expire_date', 'is_expired')

Заключение

list_display — это мощное средство, которое значительно улучшает опыт работы с административной панелью Django. Он позволяет настраивать отображение данных так, чтобы оно соответствовало вашим требованиям. Используя его в сочетании с методами модели, вы можете создавать более информативные и легко читаемые списки объектов. Внедрите list_display в свой проект Django, и вы заметите, как сильно это повысит вашу продуктивность.

Егор Егоров

Программирую на Python с 2017 года. Люблю создавать контент, который помогает людям понять сложные вещи. Не представляю жизнь без непрерывного цикла обучения, спорта и чувства юмора.

Ссылка на мой github есть в шапке. Залетай.

Оцените автора
Егоров Егор
Добавить комментарий