Одним из великолепных «аккумуляторов включены» функции 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”