我正在为一个项目设置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 - 不确定这是否相关)
答案 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
应该有效