Объект GeoDjango heroku 'DatabaseOperations' не имеет атрибута 'spatial_aggregate_name'
Я пытаюсь развернуть свое приложение на Heroku, которое работает локально, но выдает эту ошибку при развертывании на heroku:
AttributeError : 'DatabaseOperations' object has no attribute 'spatial_aggregate_name'
Для контекста, вызов api, который вызывает ошибку, пытается вернуть все адреса из таблицы, которые находятся в определенной границе.
мои настройки DATABASE в settings.py:
INSTALLED_APPS = [
'map.apps.MapConfig',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.postgres',
'rest_framework',
'django.contrib.gis',
'coreapi',
'listings',
'drf_yasg',
]
DATABASES = {
'default': {
'ENGINE': 'django.contrib.gis.db.backends.postgis',
'NAME': 'neighborhoods',
'USER': 'django',
'PASSWORD': db_pass,
'HOST':'bonfiredb.cyuiw6tqzaag.us-west-1.rds.amazonaws.com',
'PORT':'5432'
}
}
# Heroku: Update database configurations from $DATABASE_URL.
import dj_database_url
db_from_env = dj_database_url.config(conn_max_age=500)
DATABASES['default'].update(db_from_env)
# Activate Django-Heroku.
django_heroku.settings(locals(), staticfiles=False)
Я использую билдпак heroku goe buildpack.
Я просто не могу понять, почему он работает локально, но не работает на heroku.
Вот моя трассировка:
Я просто не могу определить, что меняется в настройках heroku и почему он не находит необходимые атрибуты, такие как 'spacial_aggregate_name'. Любая помощь будет высоко оценена :)
PostGIS по умолчанию не включен в базах данных Heroku Postgres. Вам необходимо включить его, выполнив
CREATE EXTENSION postgis;
на вашей базе данных, прежде чем вы сможете ее использовать.
Для более подробной информации смотрите документацию.
Возможно, это скорее патч, чем решение, но я могу заставить его работать, если внесу следующие изменения в settings.py. Закомментируйте следующие настройки:
# Heroku: Update database configurations from $DATABASE_URL.
#import dj_database_url
# db_from_env = dj_database_url.config(conn_max_age=500,
# engine = 'django.contrib.gis.db.backends.postgis',
# )
# DATABASES['default'].update(db_from_env)
# Activate Django-Heroku.
# django_heroku.settings(locals(), staticfiles=False)
похоже, что эти строки изменяли настройки в heroku для использования другого экземпляра postgresql, настроенного через heroku-postgres вместо базы данных, которую я уже настроил должным образом.
Надеюсь, в этих строках нет необходимости.