GeoDjango inspectdb с несколькими базами данных - PullRequest
1 голос
/ 09 апреля 2019

Я пытаюсь запустить 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',
            },    
}
...