Рубрики
Без рубрики

Настроить Django Admin с List_Display Property

Одной из великих «аккумуляторных батарей» включены «Особенности Django», является автоматически сгенерированной панелью администратора … Теги с Python, Django, WebDev.

Одним из великолепных «аккумуляторов включены» функции Django, является автоматически сгенерированной панелью администратора. Он обеспечивает простое интерфейс для создания, редактирования и удаления данных, определенных с помощью Django ORM. В этой статье мы собираемся включить пользовательский интерфейс администратора для простой модели и настроить его из простого представления списка на более удобный пользовательский стол, как интерфейс.

Позвольте сказать, что у нас есть простая модель Предмет который имеет два поля название и Цена Отказ

class Item(models.Model):
    name = models.CharField(max_length=50)
    price = models.DecimalField(max_digits=5, decimal_places=2)

Добавьте модель на страницу администратора, нам нужно только зарегистрировать ее в приложения admin.py файл.

from django.contrib import admin
from .models import Item

admin.site.register(Item)

Теперь, когда мы запускаем приложение и откройте браузер к [http://localhost: 8000/admin] (http://localhost: 8000/adminwewe) и добавить Пункт с именем Пицца используя панель администратора.

По умолчанию сайт администратора Django отображает объекты модели как простой список со строковым представлением объекта модели как заголовок. Наша модель класса не предоставляет __str__ Метод, поэтому Django использует имя моделей как заголовок. Мы можем исправить это, добавив __str__ Метод нашему Предмет модель.

class Item(models.Model):
    name = models.CharField(max_length=50)
    price = models.DecimalField(max_digits=5, decimal_places=2)

    def __str__(self):
        return self.name

Теперь интерфейс администратора выглядит намного лучше.

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

Мы можем настроить дисплей, создав пользовательский класс модели администратора и установка значения list_display имущество. Давайте добавим Itemadmin модель для нашего admin.py файл

from django.contrib import admin
from .models import Item

class ItemAdmin(admin.ModelAdmin):
    list_display = ("name", "price",)

admin.site.register(Item, ItemAdmin)

Теперь мы получаем столик, как вид на существующую Предмет объекты.

ModelAdmin Также позволяет нам создавать динамические поля путем объявления методов Itemadmin и добавление их в list_display имущество.

from django.contrib import admin
from .models import Item

from decimal import Decimal

class ItemAdmin(admin.ModelAdmin):
    list_display = ("name", "price", "vat")

    def vat(self, obj: Item) -> str:
        return f"{(obj.price * Decimal(0.05)):.2f}$"

admin.site.register(Item, ItemAdmin)

Теперь мы получим дополнительное поле НДС В нашей панели администратора.

Еще одно удобное улучшение нашего представления администратора позволяет редактировать в табличном представлении. Давайте сначала добавьте логическое поле is_available к нашей модели.

from django.db import models

class Item(models.Model):
    name = models.CharField(max_length=50)
    price = models.DecimalField(max_digits=5, decimal_places=2)
    is_available = models.BooleanField(default=True)

    def __str__(self):
        return self.name

Мы можем разрешить редактирование поля, добавив его в list_editable Собственность Tuple в своем классе администратора модели.

from django.contrib import admin
from .models import Item

from decimal import Decimal

class ItemAdmin(admin.ModelAdmin):
    list_display = ("name", "price", "vat", "is_available")
    list_editable = ("is_available",)

    def vat(self, obj: Item) -> str:
        return f"{(obj.price * Decimal(0.05)):.2f}$"

admin.site.register(Item, ItemAdmin)

Теперь мы можем установить is_available Значение из представления списка с помощью флажка, не открывая подробный вид.

Для дальнейшего чтения я рекомендую пройти через документацию Django на ModelAdmin.

Пример проекта с полным исходным кодом доступен в My гадость

Оригинал: “https://dev.to/juhanakristian/customize-django-admin-with-listdisplay-property-kib”