我们有一个postgres JSONField
class Demo_Model(models.Model):
urls_results = JSONField(blank=True,null=True,default=dict)
from mainapp.models import Demo_Model
j1 = [{"name":"John","age":"15"},{"name":"cena","age":"21"}]
j2 = [{"name":"Shawn","age":"9"},{"name":"Michale","age":"19"}]
Demo_Model(urls_results=j1).save()
Demo_Model(urls_results=j2).save()
Demo_Model
的2个对象中,当我们根据urls_results
字段的json数据的键和值筛选出结果时。
>>> x = Demo_Model.objects.filter(urls_results__contains=[{"name":"cena"}])
>>> x
<QuerySet [<Demo_Model: Demo_Model object (1)>]>
>>> for eachx in x:
... print(eachx.urls_results)
...
[{'age': '15', 'name': 'John'}, {'age': '21', 'name': 'cena'}]
从这
[{'age': '15', 'name': 'John'}, {'age': '21', 'name': 'cena'}]
仅需匹配DICT的对象部分
{'age': '21', 'name': 'cena'}
for eachx in x:
for key,val in eachx.items():
if key == 'name' & val == 'cena':
return eachx
urls_results
时,这是一个问题,我正在寻找另一种方法,而不是四处循环,解决此问题的最有效/快速方法是什么?