我正在尝试在带有Postgis的PostgreSQL数据库上运行inspectdb。
要为postgresql视图生成模型,我发现here应该使用以下命令:
python manage.py inspectdb --database my_schema my_view> my_view_legacy.py但是由于有了PostGIS,inspectdb还会尝试访问另一个模式中的视图,这在my_view中遇到geometry类型的字段时会引发以下错误
django.db.utils.ProgrammingError: relation "geometry_columns" does not exist
LINE 1: SELECT "coord_dimension", "srid", "type" FROM "geometry_colu...这看起来像一个catch-22:如果我指定数据库名称,以便inspectdb知道要检查哪个视图,它将无法在public模式中找到geometry_columns视图。但是如果我不指定任何数据库名称,它就不能在第一个地方找到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',
},
}发布于 2021-09-20 19:17:14
我在指定的模式中复制了geometry_columns和geography_columns,以便GeoDjango可以找到它们。
https://stackoverflow.com/questions/55591689
复制相似问题