【问题标题】:My apps not visible when using custom AdminSite使用自定义 AdminSite 时我的应用程序不可见
【发布时间】:2010-09-09 11:52:42
【问题描述】:

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

我的项目名为魔法,它有应用程序。命名为nullt

魔法/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)
...

魔术/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 与 Ubuntu 10.04 x86_64 中的 easy_install 和 Python 2.6.5 一起安装

【问题讨论】:

    标签: django django-admin


    【解决方案1】:

    默认情况下,新建项目的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 文档 ((docs.djangoproject.com/en/1.2/ref/contrib/admin) 中读到,在使用您自己的 AdminSite 实例时确实不需要使用自动发现,因为您可能会导入所有每个应用程序的 admin.py您的 myproject.admin 模块中的模块。但实际上 autodiscover() 成功了,我在自定义管理员中看到了我的自定义模型 :) 谢谢。
    猜你喜欢
    • 2017-04-10
    • 2019-04-03
    • 2011-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多