Django自定义AdminSite和ModelAdmin
我创建了一个自己的管理网站,替代了标准的AdminSite:
项目路径:project/admin/base.py
from django.contrib import admin
class MyAdmin(admin.AdminSite):
...
my_admin = MyAdmin()
并且把一些应用的模型注册到这个管理网站上: 应用路径:fact/admin.py
from django.contrib import admin
from project.admin.base import my_admin
from models import Fact
class FactAdmin(admin.ModelAdmin):
fields = ('section', 'description')
my_admin.register(Fact, FactAdmin)
我想知道怎么才能在首页上显示这个模型?我不能使用自动发现功能,正如这里所说的:如何使用自定义AdminSite类? 那个问题里提到的解决办法对我也不管用,我希望能找到一个更简单的方法。
文档中只提到:
使用自己的AdminSite实例时,实际上不需要使用自动发现功能,因为你可能会在myproject.admin模块中导入所有应用的admin.py模块。
不过,我并没有在project.admin模块中导入每个应用的模块。那么,有没有办法让自定义的AdminSite知道已注册的模型,并在首页上显示它呢?
补充:我已经设置了URL,并且我看到的是my_admin,而不是admin。使用标准的admin一切都正常。以下是项目路径:project/urls.py的代码:
from django.conf.urls import patterns, include, url
from admin.base import my_admin
urlpatterns = patterns('',
...
url(r'^admin/', include(my_admin.urls, app_name='admin')),
)
1 个回答
3
我觉得你需要这样做:
from django.contrib import admin
class MyAdmin(admin.AdminSite):
...
admin.site = MyAdmin()