在我的GeoDjango项目中,我想连接到一个传统的PostgreSQL/PostGIS数据库。它包含以下模式:
- data // 包含所有的地理空间数据
- django // 空的,由我创建
- public // 系统表,如
spatial_ref_sys
我希望 Django 表格(如截图所示)进入 django
模式。我不想污染 public
模式。
我希望 "data" 模型连接到 data
模式。我已经尝试使用从旧表生成模型,但是 python manage.py inspectdb
连接到 public
模式。
为了提供对不同模式的访问,我采用了这篇文章的第2种方法,将个人的 search_path
值预分配给特定的数据库用户:
-- user accessing django schema...
CREATE ROLE django_user LOGIN PASSWORD 'secret';
ALTER ROLE django_user SET search_path TO django, public;
-- user accessing data schema...
CREATE ROLE data_user LOGIN PASSWORD 'secret';
ALTER ROLE data_user SET search_path TO data, public;
然后我按以下方式配置了数据库连接:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'multi_schema_db',
'USER': 'django_user',
'PASSWORD': 'secret',
},
'data': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'multi_schema_db',
'USER': 'data_user',
'PASSWORD': 'secret',
},
}
我该如何配置Django使用django
模式,同时"data" 模型连接到data
模式?