首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >django hstore DictionaryField返回字符串而不是字典。

django hstore DictionaryField返回字符串而不是字典。
EN

Stack Overflow用户
提问于 2015-09-22 18:15:14
回答 1查看 736关注 0票数 2

我正在用django-hstore测试用例中的一些奇怪的行为。

我正在处理django rest框架项目,模型如下所示

模型

代码语言:javascript
复制
from django_hstore.hstore import DictionaryField

class Config(models.Model):

    data = data = DictionaryField(db_index=True)

我正在尝试测试一个基于Config模型的场景,并做这样的事情

测试

代码语言:javascript
复制
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

我不知道原因是什么

EN

回答 1

Stack Overflow用户

发布于 2015-09-22 18:40:26

为了找到解决您的问题的方法,我在不久前的django-hstore集团中发现了这个越来越多的讨论。

Andrey Antukh复制了错误。

代码语言:javascript
复制
================================================== ====================
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的版本。这也许能解决问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32724019

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档