django - 在 django 测试中使用 HstoreField

标签 django postgresql unit-testing hstore

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

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

最佳答案

感谢Simon Charette ,谁在 django-users 中回答了这个问题:

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

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

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

关于django - 在 django 测试中使用 HstoreField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37200489/

相关文章:

javascript - 如何编写双重嵌套 for 循环的计数代码?

linq - 将 Postgres 与 F# 结合使用

node.js - 仅当 active = true 时 Sequelize ORM 包含模型

python - 如何将 View /模型中的任何方法作为 celery 任务

python - PyCharm 在哪里保存 Python/Django 项目的错误日志?

python - 使用 Ajax 验证并提交 Django 表单 (django-crispy-forms)

c# - 如何初始化一些测试而不初始化其他测试?

postgresql - pgAdmin III 显示到同一服务器的重复连接

ruby-on-rails - Rails(或 Ruby)中未初始化的常量 Test::Unit::UI::XML (NameError)

unit-testing - TDD/单元测试 Windows 应用程序?