在 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 假设是错误的方式...
我在我的一个模型中使用 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 假设是错误的方式...