[英]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.