3

我正在一个项目上设置 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 - 不确定这是否相关)

4

2 回答 2

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,因此这是调用它的最佳位置。

于 2013-03-11T12:03:43.357 回答
3

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

from cart.models import Cart

如果仍然无法正常工作,请检查您是否已包含

'django.contrib.admin',

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

admin.autodiscover()

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

运行 manange.py 同步数据库

运行 manage.py 运行服务器

检查 127.0.0.1:8000/admin

它应该工作

于 2013-03-11T12:34:29.347 回答