Django生产 - 管理员中没有数据库表加载

时间:2012-10-27 16:04:14

标签: python django admin

我正在构建一个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)),
)

问题出在哪里?

3 个答案:

答案 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()

仍然破碎?

如果事情仍未按预期发挥作用,请考虑更远的方法。请记住,您对生产环境不熟悉,是否有可能提供除您自己以外的其他代码?对前端页面进行一些明显的更改,重新启动服务器,看看它是否有效。当然,这只是在黑暗中拍摄的。