为什么admin.py从未加载?

时间:2013-03-11 11:58:55

标签: python django django-admin

我正在为一个项目设置django管理员。

我在每个应用中都创建了admin.py个文件(就像我以前的项目一样)。但是,admin.py模块未加载。我的模型未注册,我无法使用pydevd.settrace()进入代码。

如果我将管理代码移动到models.py的末尾,一切都按预期工作,则模型会在admin中注册,代码会运行(我可以使用pydevd.settrace()逐步执行)。

所以这失败了 -

my_project_app
    __init__.py
    cart
        __init__.py
        models.py
        admin.py

但是当我将我的代码添加到models.py文件的末尾时,一切运行正常 -

from django.contrib import admin

class CartAdmin(admin.ModelAdmin):
    pass

admin.site.register(Cart, CartAdmin)

显然我将配置管理员,所以我不希望一个模块中的所有内容。如何让我的admin.py文件正常工作?为什么他们停止工作(这是我第一次使用django 1.5 - 不确定这是否相关)

2 个答案:

答案 0 :(得分:5)

通常您在admin.autodiscover()中致电urls.py并加载所有内容:

# urls.py
from django.conf.urls import patterns, include
from django.contrib import admin

admin.autodiscover()

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

由于您在尝试使用admin.site.urls之前必须这样做,因此这是调用它的最佳位置。

答案 1 :(得分:3)

在您的admin.py文件中,您必须导入模型

from cart.models import Cart

如果它仍然无效,请检查您是否已包含

'django.contrib.admin',

在您的installed_apps设置文件列表中,然后在网址文件中包含

admin.autodiscover()

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

运行manange.py syncdb

运行manage.py runserver

检查127.0.0.1:8000/admin

应该有效