23
I tried to use django-hstore using this nice tutorial. I added two classes to an existing app managed by South:
class Attribute(models.Model):
name = models.CharField(max_length=200, verbose_name=_("name"))
description = models.CharField(max_length=1000, verbose_name=_("description"))
class Measure(models.Model):
attribute = models.ForeignKey(Attribute)
data = hstore.DictionaryField(db_index=True)
objects = hstore.HStoreManager()
made a schemamigration --auto, launched the migration and got a django.db.utils.DatabaseError: type "hstore" does not exist.
Okay, the tuto seemed to be incomplete, the django-hstore documentation told me to use the custom database backend, i added the following to my settings file:
DATABASES['default']['ENGINE'] = 'django_hstore.postgresql_psycopg2'
Then I got a KeyError: 'default' in south/db/__init__.py", line 78. At this point, the intertubes + some trial/errors pointed me to the SOUTH_DATABASE_ADAPTERS settings variable and I added the following to the settings:
SOUTH_DATABASE_ADAPTERS = {'default': 'south.db.postgresql_psycopg2'}
New error:
File ".../psycopg2/extras.py", line 769, in register_hstore
"hstore type not found in the database. "
psycopg2.ProgrammingError: hstore type not found in the database. please install it from your 'contrib/hstore.sql' file
Now this is odd because I installed the hstore extension :
$ sudo -u postgres psql
create extension hstore;
postgre