簡體   English   中英

Django JSONField 過濾

[英]Django JSONField filtering

我正在使用 PostgreSQL 和 Django 1.9 中的這個新字段 JSONField。 所以我得到了以下數據:

id|data
1 |[{'animal': 'cat', 'name': 'tom'}, {'animal': 'dog', 'name': 'jerry'}, {'animal': 'dog', 'name': 'garfield'}]

我想弄清楚如何在這個 json 列表中進行過濾。 我試過類似的東西: object.filter(data__contains={'animal': 'cat'}但我知道這不是方法。我也一直在考慮獲取這個值並在我的代碼中過濾它:

[x for x in data if x['animal'] == 'cat']

根據 Django JSONField docs ,它解釋說data結構匹配 python 原生格式,查詢時的方法略有不同。

如果您知道 JSON 的結構,您還可以過濾鍵,就好像它們是相關字段一樣:

object.filter(data__animal='cat')
object.filter(data__name='tom')

通過數組訪問:

object.filter(data__0__animal='cat')

您的contains示例幾乎是正確的,但您的數據在列表中並且需要:

object.filter(data__contains=[{'animal': 'cat'}])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM