Как настроить django -hstore с существующим приложением, управляемым югом?

Я пытался использовать django -hstore, используя этот хороший учебник . Я добавил два класса в существующее приложение, управляемое 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()

. сделал schemamigration --auto, запустил миграцию и получил django.db.utils.DatabaseError: type "hstore" does not exist.

Хорошо, туто казалось неполным, в документации django -hstore мне было сказано использовать пользовательскую базу данных, я добавил следующее в свой файл настроек:

DATABASES['default']['ENGINE'] = 'django_hstore.postgresql_psycopg2'

Затем я получил KeyError: 'default'в south/db/__init__.py", line 78. На этом этапе межтрубки + некоторые пробы/ошибки указали мне на переменную настроек SOUTH_DATABASE_ADAPTERS, и я добавил следующее в настройки:

SOUTH_DATABASE_ADAPTERS = {'default': 'south.db.postgresql_psycopg2'}

Новая ошибка:

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

Теперь это странно, потому что я установил расширение hstore :

$ sudo -u postgres psql
create extension hstore;
postgres=# CREATE EXTENSION hstore;
ERROR:  extension "hstore" already exists
postgres=# \dx
                           List of installed extensions
  Name   | Version |   Schema   |                   Description                    
---------+---------+------------+--------------------------------------------------
 hstore  | 1.0     | public     | data type for storing sets of (key, value) pairs
 plpgsql | 1.0     | pg_catalog | PL/pgSQL procedural language
(2 rows)
postgres=# SELECT 'hstore'::regtype::oid;
  oid  
-------
 57704
(1 row)

. Как это должно работать? Я использую Django 1.4, Postgresql 9.1.

21
задан Maxime R. 20 July 2012 в 13:37
поделиться