Django不安装模型表

时间:2015-06-27 16:36:14

标签: python django postgresql

在我的项目中,我有一个带有不同路由器类的routers.py。现在,我正在制作一个新的应用程序。我创建了models.py。我还在settings.py中的INSTALLED_APPS中注册了该应用程序。然后,我运行验证。一切都好。当我同步nat时,Django没有安装表。我尝试使用

python manage.py sqlall <app_name> | psql <database>

然后,我收到一条错误消息:

psql: FATAL: password authentication failed for user <user name>

我注意到postgres中不存在该角色。所以,我创建了具有登录权限createdb和密码的角色。然后,我收到一条不同的错误消息:

psql: FATAL: password authentication failed for user <user name>
close failed in file object destructor:
Error in sys.excepthook:

Original exception was:

并且,它不提供原始例外。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

看起来Django应用程序无法登录数据库。

在django的settings.py中,确保您拥有正确的数据库凭据设置:

DATABASES = {
    'default': {
    'ENGINE': 'django.db.backends.postgresql_psycopg2',
    'HOST': get_env_variable("DJANGO_DB_HOST"),
    'NAME': get_env_variable("DJANGO_DB_NAME"),
    'USER': get_env_variable("DJANGO_DB_USER"),
    'PASSWORD': get_env_variable("DJANGO_DB_PWD"),
    'PORT': '',
    },
...
}

正如您所看到的,我的凭据是从环境变量中获取的。您可以将它们硬编码以用于测试目的。

然后在DB(我的是postgresql)中创建用户/授予它正确的权限,例如:

ssh root@dbhost
su - postgres
createdb dbname
psql
GRANT ALL PRIVILEGES ON DATABASE dbname TO dbuser

应该这样做。 如果您的设置中缺少这些步骤,我建议您执行以下步骤:

在您的应用admin.py中使用Django的管理员注册您的模型:

# Register your models here.
admin.site.register(Model1)
...
admin.site.register(ModelN)

然后,假设您已经创建了项目,请运行:

python manage.py migrate

(这是syncdb的等价物。阅读有关migrations的文档)。 如果该命令没有要求管理超级用户,则使用以下命令创建管理用户(即可以通过django的管理界面操作模型的用户):

python manage.py createsuperuser

点亮Django

python manage.py runserver 0.0.0.0:8000

看看您在

访问您的网站和管理员时会发生什么
localhost:8000/
localhost:8000/admin

如果你已经了解所有这些事情,请原谅我。这就是我在开发环境中通常做的事情(我当然也使用virtualenv)。