Я пытаюсь запустить inspectdb
в БД PostgreSQL с Postgis.
Чтобы сгенерировать модель для представления postgresql, я обнаружил здесь , что мне следует использовать команду:
python manage.py inspectdb --database my_schema my_view> my_view_legacy.py
Но из-за PostGIS inspectdb
также пытается получить доступ к представлению в другой схеме, что вызывает следующую ошибку при обнаружении поля типа geometry
в my_view
:
django.db.utils.ProgrammingError: relation "geometry_columns" does not exist
LINE 1: SELECT "coord_dimension", "srid", "type" FROM "geometry_colu...
Это похоже на catch-22 : если я укажу имя базы данных, чтобы inspectdb
знал, какое представление проверять, он не сможет найти поиск geometry_columns
в public
схема.Но если я не укажу имя базы данных, она не сможет найти my_view
.
Есть ли какое-нибудь решение для этого?
Мои схемы базы данных определены как:
DATABASES = {
'default':
{
},
'public':
{
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'OPTIONS': {
'options': '-c search_path=public'
},
'NAME': 'my_db',
'USER': secrets.USER,
'PASSWORD': secrets.PASSWORD,
'HOST': 'my.host.addr',
'PORT': '5432',
},
'my_schema':
{
'ENGINE': 'django.contrib.gis.db.backends.postgis',
'OPTIONS': {
'options': '-c search_path=my_schema'
},
'NAME': 'my_db',
'USER': secrets.USER,
'PASSWORD': secrets.PASSWORD,
'HOST': 'my.host.addr',
'PORT': '5432',
},
}