我实现了一个自定义的管理网站与自定义标题,当查看“主页”和“应用程序”的意见,一切都很顺利。但是,当我检查“Model”实例时,头会返回到默认值。你知道吗
我该怎么解决这个问题?我做错什么了吗?或者把它看作是Django的一个bug是合理的吗?你知道吗
创建新项目和应用程序,并在应用程序的文件sites.py
中:
from django.contrib import admin
class CustomSite(admin.AdminSite):
site_header = 'Custom Header'
site_title = 'Custom Title'
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self._registry.update(admin.site._registry)
custom_site = CustomSite('custom_admin')
然后,在项目URL配置urls.py
中:
from django.contrib import admin
from django.urls import path
from adminfail.sites import custom_site
urlpatterns = [
path('custom_admin/', custom_site.urls),
]
另外,将应用程序添加到settings.py
中的INSTALLED_APPS
。你知道吗
然后,如果您从命令行创建一个超级用户并运行应用程序,您将看到在检查模型实例时,自定义头返回到默认值。你知道吗
好吧,我终于明白我做错了什么。我正在从默认的管理站点复制注册表,但是注册表是模型和它们的
ModelAdmin
实例之间的映射,ModelAdmin
实例有一个属性admin_site
,它告诉Django这是在哪个AdminSite
下注册的。因此,为了解决这个问题,我简单地复制了ModelAdmin
,并将admin_site
属性设置为我的CustomSite
。如果你改变了其他的东西,那么deepcopy
它可能是好的,这是一个相对未经测试的技巧/黑客,可能会有其他的后果,但现在一切都进展得很顺利。你知道吗以下是
CustomSite
中的代码:相关问题 更多 >
编程相关推荐