Django JSONField过滤
我正在使用PostgreSQL和Django 1.9的JSONField这个新字段。所以我得到以下数据:
id|data1 |[{'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')
您的包含示例几乎是正确的,但是您的数据在列表中,并且需要:
object.filter(data__contains=[{'animal': 'cat'}])
以上是 Django JSONField过滤 的全部内容, 来源链接: utcz.com/qa/404156.html