我创建了这样的模型:
class Customer(models.Model):
name = models.CharField(max_length=200)
data = JSONField()
并且数据归档具有以下结构:
Customer.objects.create(name='David', data={
'key1': 'text1',
'key2': 'text2',
},
})
问题是,当我想通过包含查询时,它不会返回任何结果。
Customer.objects.filter(data__key1__contains='t')
生成的sql查询结果不能为' json提供正确的sql,例如'结构
答案 0 :(得分:3)
试试这个:
Customer.objects.filter(data__key1__icontains='t')
答案 1 :(得分:3)
Django中的JSONField与json.dumps()
一起保存您可以尝试:
import json
search = json.dumps({'key1': 'text1'})[1:-1] # removed { and }
Customer.objects.filter(data__contains=search)
如果此代码失败,您可以尝试下一个:
search = '"key1":"text1"'
Customer.objects.filter(data__contains=search)
答案 2 :(得分:1)
Customer.objects.filter(data__contains={'key1': 'text1'})
返回的对象是键值对的给定dict全部包含在字段中的对象。