我正在构建一个Django应用程序,现在我正在制作中。我有这个问题:在执行manage.py syncdb之后(一切都还可以)我进入管理员,我找不到模型表。我的admin.py文件存在,这是我的文件url.py:
from django.conf.urls.defaults import patterns, include, url
from django.contrib import admin
# Uncomment the next two lines to enable the admin:
# from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
# Examples:
# url(r'^$', 'stambol.views.home', name='home'),
# url(r'^stambol/', include('stambol.foo.urls')),
# Uncomment the admin/doc line below to enable admin documentation:
# url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
# Uncomment the next line to enable the admin:
url(r'^admin/', include(admin.site.urls)),
)
问题出在哪里?
答案 0 :(得分:0)
from django import admin
from example.models import YourModel
admin.site.register(YourModel)
# or
class ModelAdmin(admin.ModelAdmin):
pass
admin.site.register(YourModel, YourModelAdmin)
这应该可以解决问题
答案 1 :(得分:0)
请确保在INSTALLED_APPS
的{{1}}内删除以下评论。然后再次运行settings.py
。他们应该如下所示,而不是前面的./manage.py syncdb
#
答案 2 :(得分:0)
<强>权限强>
首先,确保您有权编辑缺失的模型。通常使用超级用户帐户进行开发,然后使用不同的非超级用户帐户测试生产部署。如果您没有至少读取权限,则管理员将不会列出该类。
我认为这是最有可能的原因,但是我已经写好了以后剩下剩下的了。
发现您的管理员注册:
runserver和生产服务器之间的一个显着区别是,当您运行runserver
时,它会导入所有models.py
个文件并验证模型。这在生产中不会发生,因此如果您使用models.py
内的管理员注册模型,则需要确保导入该文件以便代码运行。你可以在主网址中这样做。
首选解决方案是在每个应用admin.py
个文件中进行注册,以便autodiscover
选择这些文件。
设置:强>
正如@Pratik所说,您确实需要在已安装的应用中列出管理员。它也有一些依赖关系,如here所述。已安装的应用至少应包含以下内容:
INSTALLED_APPS = [
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions'
'django.contrib.messages',
'django.contrib.admin',
#...
'myapp',
#...
]
确保包含您的应用myapp
的目录位于您的python路径中,以便myapp
选择autodiscover
。这对你来说已经正常工作了,否则你会得到类似ImportError: No module named myapp
的东西。
重新启动服务器:
最后,只是为了回顾一下埋藏在评论中的内容,您可以通过触摸wsgi文件touch wsgi.py
来重新启动生产服务器。执行此操作时使用制表符完成,以确保您触摸现有的wsgi文件,而不是由于拼写错误或其他类似文件而创建新文件。您正在触摸的wsgi文件应包含以下内容:
...
# tell django to find settings at APPS_DIR/mainsite/settings.py'
os.environ['DJANGO_SETTINGS_MODULE'] = 'mainsite.settings'
# hand off to the wsgi application
application = WSGIHandler()
仍然破碎?
如果事情仍未按预期发挥作用,请考虑更远的方法。请记住,您对生产环境不熟悉,是否有可能提供除您自己以外的其他代码?对前端页面进行一些明显的更改,重新启动服务器,看看它是否有效。当然,这只是在黑暗中拍摄的。