gpt4 book ai didi

django - 从 Django jsonfield 中提取嵌套值

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

有没有一种方法可以查询一个对象,从 JSONField 字段中“提取”一段嵌套数据,然后使其在每个 Queryset 实例上作为自定义临时字段可用?

在我的用例中,我将来自 Twitter API 的溢出元数据存储在 data 字段中供以后使用。我希望能够访问 TwitterPost.data 中的嵌套字段 followers_count

我已经阅读了有关如何根据嵌套值进行过滤的文档,但没有阅读有关如何在生成查询集时将其提取为临时字段的文档。

同样,我已阅读 annotate 文档以了解创建自定义临时字段的方法,但这些示例都在简单字段上使用聚合函数,所以 JSONFields 不是。

提前感谢您的任何建议。

示例模型:

from django.contrib.postgres.fields import JSONField

class TwitterPost(models.Model):
id = models.IntegerField()
data = JSONField()

data 字段的示例 JSON 值:

{
'followers_count': 7172,
"default_profile_image": false,
"profile_text_color": "000000"
}

我想做的伪代码:

TwitterPost.objects.annotate(followers_count=instance.data.followers_count)

最佳答案

这可能是一个迟到的答案,但有办法做到这一点

from django.contrib.postgres.fields.jsonb import KeyTransform

TwitterPost.objects.annotate(followers_count=KeyTransform('followers_count', 'data'))

或者可以使用 KeyTextTransform 代替 KeyTransform(用于转换为字符串)

关于django - 从 Django jsonfield 中提取嵌套值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40850322/

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