繁体   English   中英

使用Django在JSONField上进行选择

[英]SELECT on JSONField with Django

我的应用程序严重依赖API,这些API会意外地更改它们返回数据的方式。 因此,我选择在Django中使用PSQL和JSONFields。
我已经看到了很多有关如何按JSONField中的值进行过滤的示例/文档,但是我还没有看到任何允许我对这些值进行SELECT的示例/文档。

我所知道的有效;
queryset.filter(jsonfield__key_name = 'value')

我想知道怎么做;
queryset.values('jsonfield__key_name')

提前致谢!

答案是RawSQL表达式。

queryset.annotate(value = RawSQL("(jsonfield->%s)", ('key_name',)))
queryset.values('value')

RawSQL的第一个参数就像一个模板字符串,第二个参数将填充第一个的%s

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

queryset.values('jsonfield__key_name') 

从Django 2.1开始, order_by()values()values_list() ,因此您现在可以使用以下代码:

queryset.values('jsonfield__key_name')

这是相关的出 请求

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM