Python Django自定义AdminSite和ModelAdmin

Python Django自定义AdminSite和ModelAdmin,python,django,Python,Django,我已使用自己的AdminSite覆盖了标准AdminSite: project/admin/base.py: from django.contrib import admin class MyAdmin(admin.AdminSite): ... my_admin = MyAdmin() from django.contrib import admin from project.admin.base import my_admin from models impor

我已使用自己的AdminSite覆盖了标准AdminSite:

project/admin/base.py:

from django.contrib import admin    

class MyAdmin(admin.AdminSite):
    ...    

my_admin = MyAdmin()
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)
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')),
)
并向其注册了一些应用程序的模型: fact/admin.py:

from django.contrib import admin    

class MyAdmin(admin.AdminSite):
    ...    

my_admin = MyAdmin()
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)
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')),
)
如何在索引页上显示此模型?我无法使用此处所述的自动发现: 这个问题中建议的解决方法对我来说也不适用,我想让它变得更干净

文件仅说明:

在使用您自己的AdminSite实例时,确实不需要使用自动发现,因为您可能会导入myproject.admin模块中的所有per-app admin.py模块

但我不会在project.admin模块中导入每个应用程序模块。 那么,有没有办法告诉CustomAdminSite关于注册的模型并在索引上显示它呢

编辑:我已经钩住了URL,我看到的是我的管理员,而不是管理员。使用标准管理,一切正常。以下是project/url.py的代码:

from django.contrib import admin    

class MyAdmin(admin.AdminSite):
    ...    

my_admin = MyAdmin()
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)
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')),
)

我认为你需要做:

from django.contrib import admin  
class MyAdmin(admin.AdminSite):
  ...    

admin.site = MyAdmin()

现在展示的是什么?您是否也更改了url配置()?是的,我已钩住url,并且在索引页上看到“您没有编辑任何内容的权限”的管理页面。您确定您的url指向的是
my_admin
而不是
admin
?是的。我已进行了显示代码的编辑。你确定你的
app\u name
只是
admin
?这不应该是我的管理员吗?这样做之后,我在主页上失去了用户。如何取回它们?从django.contrib.auth.models导入用户。。。。管理站点注册(用户)