我正在用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”
我原以为{‘分页号码’:50}
只有在我运行测试时才会发生这种情况。
当我手动对命令shell执行创建操作时,一切正常,代码也执行得很好。
我正在使用django-hstore 1.2.1
PostgreSQL 9.4.4
我不知道原因是什么
发布于 2015-09-22 18:40:26
为了找到解决您的问题的方法,我在不久前的django-hstore集团中发现了这个越来越多的讨论。
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的文档:
1.4。限制PostgreSQL的hstore实现没有类型的概念;它存储字符串键到字符串值的映射。值是存储在数据库中有关其原始类型的字符串。可以通过使用自1.3.0版本以来的模式模式或自django_hstore的1.3.6版本以来使用序列化字典字段来克服这一限制。
更新django-hstore的版本。这也许能解决问题。
https://stackoverflow.com/questions/32724019
复制相似问题