簡體   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