在 Django 测试中使用 HstoreField

Working with HstoreField in django tests

我在我的一个模型中使用 HstoreField,当我尝试测试它时出现错误 psycopg2.ProgrammingError: ERROR: function hstore(integer[], text[]) does not exist。如果我正确理解这个问题,那是因为 hstore 扩展没有在数据库中设置,就像在迁移中通过添加 HStoreExtension 操作所做的那样 (documentation)。

如何在默认测试数据库中设置 hstore 扩展并解决我的问题?

感谢Simon Charette, who answer this question in django-users:

从异常来看,问题似乎与缺少的扩展名无关 但从尝试使用和整数作为键。例如

instance.hstore_field = {1: 'foo'} 代替 instance.hstore_field = {'1': 'foo'}

postgresql 中 hstore 中的键和值只是文本字符串 (docs),Django 不会将键对象转换为字符串。所以我的 HStoreExtension 假设是错误的方式...