gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 12:26:38 25 4
gpt4 key购买 nike

我在使用 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

我想不通这是什么原因

最佳答案

在尝试为您的问题找到解决方案时,我不久前在 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'>

如果您阅读 documentation hstore 的:

1.4. Limitations PostgreSQL's implementation of hstore has no concept of type; it stores the mapping of string keys to string values. Values ​​are strings stored in the database Regarding of Their original type. This limitation can be Overcome by using either the schema mode since version 1.3.0 or by using the serialized dictionary field since version 1.3.6 of django_hstore.

更新django-hstore的版本。这也许可以解决问题。

关于django-hstore DictionaryField 返回字符串而不是字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32724019/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com