我尝试使用自己的自定义类覆盖AdminSite类。我按照Django文档中的教程进行了操作:https://docs.djangoproject.com/en/1.10/ref/contrib/admin/#customizing-adminsite,但是并没有奏效。具体来说,我想用自己的类覆盖原始的AdminSite而不是仅仅在项目中添加另一个管理站点。
我创建了自己的自定义类MyAdminSite,它继承自该类
from django.contrib.admin import AdminSite
class MyAdminSite(AdminSite):
pass
然后在我的应用程序urls.py文件中,我已经添加了:
from django.conf.urls import url, include
import django.contrib.admin as admin
from .admin_site import MyAdminSite
admin.site = MyAdminSite()
admin.autodiscover()
urlpatterns = [
url(r'^', admin.site.urls),
]
看起来它是有效的,但管理模型注册到AdminSite而不是MyAdminSite。
我尝试了三种方式将模型注册到我的自定义站点:
@admin.register(Model)
class ModelAdmin(model.AdminModel):
...
这种方式可以将模型注册到原始的AdminSite。
第二种方式:
@admin.site.register(Model):
class ModelAdmin(model.AdminModel):
...
那样做不起作用并导致异常。ModelAdmin类没有传递给register方法。
最后一种方法:
那樣做沒有效果並導致異常。ModelAdmin類未傳遞給register方法。
最後一種方法:
class ModelAdmin(model.AdminModel):
...
admin.site.register(Model, ModelAdmin)
这个方法可行,但是在管理界面上,我只能看到我的模型而无法看到Django admin的模型(用户和组)。
我该如何永久性地覆盖admin.site并将所有模型注册到MyAdminSite?