在Heroku上使用Django运行PostGIS

问题描述 投票:2回答:1

[尝试在Heroku上运行GeoDjango应用,这确实是一项工作。在解决了各种问题之后,我遇到了一个似乎无法摆脱困境的问题。

  File "/app/.heroku/python/lib/python3.6/site-packages/django/db/models/fields/__init__.py", line 673, in db_parameters
    type_string = self.db_type(connection)
  File "/app/.heroku/python/lib/python3.6/site-packages/django/contrib/gis/db/models/fields.py", line 105, in db_type
    return connection.ops.geo_db_type(self)
AttributeError: 'DatabaseOperations' object has no attribute 'geo_db_type'

我正确使用了dj-database-url来设置引擎,但是仍然看到错误

我添加了一条打印语句以输出我的数据库设置,因为它们正在被py解释

settings.py中:

if os.getenv('DYNO'):
    GDAL_LIBRARY_PATH = os.path.expandvars(os.getenv('GDAL_LIBRARY_PATH'))
    GEOS_LIBRARY_PATH = os.path.expandvars(os.getenv('GEOS_LIBRARY_PATH'))
    DATABASES['default'] =  dj_database_url.parse(os.getenv('DATABASE_URL'),'django.contrib.gis.db.backends.postgis')
    print(DATABASES['default'])

这是打印语句,输出heroku服务器解释为我的DATABASES['default']凭据

{'NAME': 'name', 'USER': 'usr', 'PASSWORD': 'pw', 'HOST': 'herokuec2host.amazonaws.com', 'PORT': 5432, 'CONN_MAX_AGE': 0, 'ENGINE': 'django.contrib.gis.db.backends.postgis'}

任何帮助表示赞赏。我知道有关此问题的各种类似stackoverflow帖子,但是我研究过的所有解决方案都没有解决该问题-因此请再次询问。

python-3.x heroku postgis geodjango heroku-postgres
1个回答
0
投票

Geodjango需要连接“ postgis:// ...”,但是heroku将数据库设置更改为“ postgres://”。因此,如果将DATABASES变量移到settings.py中的底部,则问题已解决。快乐黑客:)

django_heroku.settings(locals())

DATABASES = {
    'default': {
        'ENGINE': 'django.contrib.gis.db.backends.postgis',
        'NAME': '*',
        'USER': '*',
        'PASSWORD': '*',
        'HOST': '*',
        'PORT': '5432',
    },
}
© www.soinside.com 2019 - 2024. All rights reserved.