如何使用注释和KeyTextTransform和KeyTransform提取嵌套数组的第一个元素?

问题描述

我正在使用Django 2.2和postgres

我有一个名为actions的jsonb字段

这是测试值

actions={
    "accept": [
        {
            "id": 123,# some random action id
            "created": "{:%Y-%m-%dT%H:%M:%s.%f%z}".format(datetime.Now()),"user_id": 247,# some random user id
        }
    ]
},

所以我想使用values_listannotate。我不知道如何获取actions.accept.0.created

我尝试了什么

.annotate(first_accept=KeyTextTransform(0,KeyTextTransform("accept","quotation__actions")))

这失败。我得到了错误

django.db.utils.DataError: invalid input Syntax for integer: "accept"
LINE 1: ...te_type",("soMetable"."actions" #>> ARRAY['accept',0..

.annotate(accept_actions=KeyTextTransform("accept","quotation__actions"))

这行得通,但它给了我

'[{"id": 123,"created": "2020-10-16T12:28:16.452071","user_id": 247}]'作为字符串。

我可以随后将字符串解析为yes,但是我更喜欢直接访问数组第一个元素的created

我该怎么做?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)