当使用自定义的AdminSite时,我的应用程序不可见。

5
我需要翻译的内容如下:

我在使用自定义AdminSite时遇到了问题 - 我的应用程序在管理索引中不可见,如果我键入适当的URL来查看它们的模型,则也无法访问它们。我的问题与此非常相似:http://groups.google.com/group/django-users/browse_thread/thread/881feb7eef80853a,但这是一种相反的问题 - 绑定的模型可见,但我的自定义模型不可见。

我的项目名为magic,其中包含一个名为nullt的应用程序。

magic/admin.py:

from django.contrib.admin.sites import AdminSite
from django.contrib.auth.models import User, Group
from django.contrib.auth.admin import UserAdmin, GroupAdmin 

class MagicAdmin(AdminSite):
    pass

admin_site = MagicAdmin()

admin_site.register(Group, GroupAdmin)
admin_site.register(User, UserAdmin)

magic/nullt/admin.py

from magic.admin import admin_site
...
admin_site.register(Host, HostAdmin)
admin_site.register(Client, ClientAdmin)
...

magic/urls.py

from django.conf.urls.defaults import * #@UnusedWildImport
from magic.admin import admin_site

urlpatterns = patterns('',
    (r'^admin/', include(admin_site.urls)),
)

顺便提一下,我正在使用的是 Django 1.2.2 版本,该版本是通过 easy_install 安装的,并且 Python 版本为 Ubuntu 10.04 x86_64 自带的 2.6.5 版本。

1个回答

2

默认情况下,新项目的urls.py文件中会注释掉以下两行:

from django.contrib import admin
admin.autodiscover()

来自 django/contrib/admin/__init__.py:

def autodiscover():
    """
    Auto-discover INSTALLED_APPS admin.py modules and fail silently when
    not present. This forces an import on them to register any admin bits they
    may want.
    """

即使您有自定义管理员,也可能需要进行此调用。


我在Django 1.2文档中读到(http://docs.djangoproject.com/en/1.2/ref/contrib/admin/), 当使用自己的AdminSite实例时,实际上没有必要使用autodiscover,因为您可能会在myproject.admin模块中导入所有每个应用程序的admin.py模块。但实际上,autodiscover()起了作用,我在我的自定义管理界面中看到了我的自定义模型 :) 谢谢。 - Dmitry Musatov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接