我正在使用django-hstore对我的测试用例进行一些奇怪的行为。
我正在开发一个django rest框架项目,模型可能如下所示
from django_hstore.hstore import DictionaryField
class Config(models.Model):
data = data = DictionaryField(db_index=True)
我正在尝试基于Config模型测试场景并执行类似这样的操作
class ConfigTestCase(TestCase):
def setUp(self):
Config.objects.create(data={'pagination_number': '50'})
def test_config_data(self):
# Below code is getting failed
Config.objects.first().data.get('pagination_number')
当我做Config.objects.first()。data
时我得到"" pagination_number" =>" 50"'
我期待{' pagination_number':50}
只有在我运行测试
时才会发生这种情况当我在我的命令shell上手动执行创建操作时,一切正常,代码也可以正常执行
我正在使用django-hstore 1.2.1
PostgreSQL 9.4.4
我无法弄清楚这个
的原因答案 0 :(得分:0)
试图找到问题的解决方案,我最后在django-hstore group
中找到了这个不断增加的讨论。Andrey Antukh 转载了错误。
================================================== ====================
FAIL: test_properties_hstore (tests.django_hstore_tests.tests.HstoreTest)
-------------------------------------------------- --------------------
Traceback (most recent call last):
File "/home/niwi/devel/django-hstore/tests/django_hstore_tests/tests.py", line 471, in test_properties_hstore
self.assertEqual (type (instance.data), HStoreDict) # TEST FAILS HERE
AssertionError: <class 'str'> = <class 'django_hstore.fields.HStoreDict'>
如果您阅读了hstore的documentation:
1.4。限制PostgreSQL的hstore实现没有类型的概念;它存储字符串键到字符串值的映射。值 是存储在数据库中的字符串关于它们的原始类型。 可以通过使用模式模式克服此限制 版本1.3.0或使用序列化字典字段 django_hstore的1.3.6版。
更新django-hstore的版本。这个也许解决了这个问题。