gpt4 book ai didi

django - 保持JSON数据插入的顺序-django

转载 作者:行者123 更新时间:2023-12-04 20:45:12 25 4
gpt4 key购买 nike

我的django应用程式中有一个 JSONField 。数据可能看起来像这样:

{
"05/2013" : 101,
"04/2013" : 100.9,
"03/2013" : 100.5,
"02/2013" : 100.3,
"01/2013" : 100.3
}

这是一个价格指数。当我从字段中获取数据时,我想保留数据插入的顺序。

我看了使用 OrderedDictadvanced option。 Dict(我猜)使用词法排序,因此输出损失为这种格式的原始顺序。
我试过将日期翻转为 2012-012012-02等格式,但是输出仍然困惑。部分输出:
"2011-08":104.2,
"2011-09":104,
"2011-02":102.3,
"2011-03":102.5,
"2011-01":102,
"2011-06":104,
"2011-07":103.7,
"2011-04":103.1,
"2011-05":103.6,
"2013-04":100.9,
"2013-05":101,
"2012-10":106,
"2012-11":105.5,

我不确定这是哪种类型,而我在寻找解决方案方面落后了一步。
赞赏任何想法。

编辑:
这是模型字段声明
from jsonfield import JSONField
...
values = JSONField(null=True, blank=True, verbose_name=_("values"),load_kwargs={'object_pairs_hook': collections.OrderedDict})
...

最佳答案

如果您需要维护JSONFIeld中的键顺序,则可以为本地JSONField覆盖db_type以使用json而不是jsonb:

class RawJSONField(JSONField):

def db_type(self, connection):
return 'json'

Postgres documentation:

实际的主要区别是效率之一。 json数据类型存储输入文本的精确副本,处理函数必须在每次执行时重新解析; jsonb数据以分解后的二进制格式存储,由于增加了转换开销,因此输入速度稍慢,但由于不需要解析,因此处理速度明显更快。 jsonb还支持索引编制,这可能是一个很大的优势。

如果您不需要根据JSON Blob的内容为数据建立索引,而确实需要维护实例化字典时创建的 key 顺序(也许您正在使用对JSON key 进行假设的客户端库)订单),那么这可能对您有用。

关于django - 保持JSON数据插入的顺序-django,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19052027/

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