自定义AdminSite Django的自定义模板

时间:2018-10-30 17:02:40

标签: python django

我有两个管理站点,并且我希望两个站点上都有不同的自定义模板 这是我的admin.py文件:

from django.contrib import admin
from django.contrib.admin import AdminSite
from .models import Equipo

@admin.register(Equipo)
class EquipoAdmin(admin.ModelAdmin):
    list_display = ('codigo', 'nombre', 'contador', 'unidades')

class AdminMantenimiento(AdminSite):
    site_header = "MANTENIMIENTO"

class EquipoAdminMantenimiento(admin.ModelAdmin):
    list_display = ('codigo', 'nombre')

admin_site = AdminMantenimiento(name='Administrador Mantenimiento')
admin_site.register(Equipo, EquipoAdminMantenimiento)

这是我的urls.py文件:

from django.contrib import admin
from django.urls import path
from Mantenimiento.admin import admin_site

urlpatterns = [
    path('admin/', admin.site.urls),
    path('admin2/',admin_site.urls)
]

如果我按照Django documentation覆盖模板,则更改将应用​​于两个AdminSite。如何为扩展AdminSite的类设置自定义模板?

1 个答案:

答案 0 :(得分:0)

我唯一想到的方法是显式覆盖您要自定义的管理页面的URL,并将其指向其他模板。例如,在admin2 /中自定义模板,但在admin1 /

中自定义模板
from django.contrib import admin
from django.urls import path
from Mantenimiento.admin import admin_site
from app.views import *

urlpatterns = [
    path('admin/', admin.site.urls),
    path('admin2/app/model', TemplateView.as_view(template_name='model_admin.html')),
    path('admin2/', admin_site.urls)
]

这仅在更具体的url定义(admin2/app/model)位于较不具体的定义(admin2/)之前才有效