首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用Django在JSONField上选择

使用Django在JSONField上选择
EN

Stack Overflow用户
提问于 2017-02-22 06:47:48
回答 2查看 869关注 0票数 1

我的应用程序在很大程度上依赖于API,这些API会对返回数据的方式进行不可预测的更改。出于这个原因,我选择在Django中使用PSQL和JSONFields。

我已经看过很多关于如何在JSONField中按值过滤的示例/文档,但我还没有看到任何允许我选择这些值的示例/文档。

我所知道的是有效的;

queryset.filter(jsonfield__key_name = 'value')

我想知道该怎么做;

queryset.values('jsonfield__key_name')

提前感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-22 07:19:40

答案是一个RawSQL表达式;

代码语言:javascript
复制
queryset.annotate(value = RawSQL("(jsonfield->%s)", ('key_name',)))
queryset.values('value')

RawSQL的第一个参数类似于模板字符串,第二个参数将填充第一个参数的%s

更新:显然Django 2.1+现在支持我最初的预期行为;

代码语言:javascript
复制
queryset.values('jsonfield__key_name') 
票数 5
EN

Stack Overflow用户

发布于 2019-03-08 18:29:04

从Django2.1开始,order_by()values()values_list()都支持转换,所以你现在可以使用:

代码语言:javascript
复制
queryset.values('jsonfield__key_name')

下面是相关的ticketpull request

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

https://stackoverflow.com/questions/42379475

复制
相关文章

相似问题

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