在Django中指定PostgreSQL Schema

时间:2017-01-03 20:55:05

标签: django postgresql

我正在尝试使用Django构建一些数据库前端,因为我喜欢一般的MVC结构以及他们的模板系统和管理界面。但是,我在使用PostgreSQL后端的某些方面遇到了问题。

我设法弄清楚如何使用settings.py文件的数据库部分指定不同的模式(和数据库),如下所示:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    },
    'MPS': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'OPTIONS': {
            'options': '-c search_path=django'
        },
       'NAME': 'sandbox_manzer',
       'HOST': '192.168.2.151',
       'PORT': '5434',
       'USER': '******',
       'PASSWORD': '**********************',
    }
}

然而,当我尝试编写一些基本测试时,如详细here,我遇到了一个问题。我的用户可以很好地创建数据库,因此我的test_db可以构建,但是当django应用程序将模型构建到表中时,我得到一个错误,指出test_db的No schema is specified。我将非常感谢有关如何为test_db指定模式名称的任何帮助。特别是因为我打算使用不同的模式作为逻辑分隔符为单个项目构建多个应用程序。

谢谢!

1 个答案:

答案 0 :(得分:8)

我想你熟悉PostgreSQL schemas.

的概念

您的应用正在寻找数据库中的django架构(可能不存在),因为您已明确告知它。

       'options': '-c search_path=django'

对于每个应用程序,创建一个适当命名的架构并在search_path

中指定它