나는 Heroku (cedar stack)에 배치 된 장고 (v 1.3.3) 프로젝트를 가지고 있습니다. 설정을 구성하는 데 권장되는 dj_database_url을 사용합니다. 데이터베이스. 모든 것이 훌륭합니다 (이 시점까지).django-hstore on Heroku
그러나 응용 프로그램의 일부로 django-hstore을 사용하고 싶습니다. 워드 프로세서에 따르면, 당신이 settings.py에서 데이터베이스 엔진을 변경해야합니다 : 내 settings.py 파일에서 결과
'ENGINE': 'django_hstore.postgresql_psycopg2',
, 나는 다음을 수행하십시오
DATABASES = {'default': dj_database_url.config()}
DATABASES['default']['ENGINE'] = 'django_hstore.postgresql_psycopg2'
모든 작업을 내게 국지적으로 좋네. 그리고 hstore 필드가있는 모델은 훌륭하게 작동합니다 (값은 사전입니다).
는 그러나, 나는에게 Heroku에 배포 할 때, 데이터베이스 엔진에 오버라이드 (override)/리셋됩니다 : 그것을 디버깅에서 시도에서
ENGINE: 'django.db.backends.postgresql_psycopg2'
, 내 설정 파일에서 엔진을 설정 한 후 인쇄를 뒀다. 다음
heroku run bash
과 : :이 프로그램을 실행할 때
python myapp/manage.py shell
, 내 인쇄 문이 나에게 원하는 엔진 (django_hstore.postgresql_psycopg2)와 올바른 (원하는) 데이터베이스 설정을 보여줍니다 다음, 나는 떠들썩한 파티를 실행합니다. 그러나, 나는 다음 할 경우 :
from django.conf import settings
print settings.DATABASES
나는 데이터베이스 엔진이 더 이상 django_hstore이지만, 다시 정상 (비 hstore) 값으로 설정 볼 수 있습니다. 마음에
TypeError: string indices must be integers, not str
보관하십시오 : 내 모델 중 하나를 가져 객체를로드하는 GET을 할 경우 그리고, hstore 필드의 값은 문자열, 그리고 던질 것입니다 키에 액세스하려는 시도와 오류입니다 이것이 로컬에서 작동한다는 것입니다. 그러나 heroku에 배포 한 후 사전으로 값에 액세스하려는 시도는 위의 TypeError를 throw합니다.
내 질문은 : 내 엔진이 겹쳐지고 이유
이- 사람이 알고 있나요? 그렇다면 어떻게 해결할 수 있습니까?
또는
당신이 운동을 어떻게 끝났는가를? 나는 HStore w/Django & Heroku를보고 있으며,이 함정에 조심하기 전에주의해야한다. –