我有一个 MySQL 数据库,其中有一个表,其中包含名为 things 的 JSON 字段。 JSON 看起来像这样
things = {"value1": "phil", "value2": "jill"}
我有通过
从数据库中提取的对象集合my_things = Name_table.objects.values
现在,我想通过 JSON 字段之一过滤 my_things 集合。我已经尝试过了
my_things = my_things.filter(things__contains={'value': 'phil'})
返回一个空集合。我也尝试过
my_things = my_things.filter(things={'value': 'phil'})
和
my_things = my_things.filter(things__exact={'value': 'phil'})
我使用的是 Django 1.10 和 MySQL 5.7 想法?
最佳答案
这取决于你如何在字段中存储 JSON。如果您使用django-jsonfield ,那么您的 things
将是不带空格的字符串,字符串包含在引号内: '{"value1":"phil","value2":"jill"}'
.
然后,通过 docs :
my_things = my_things.filter(things__contains='"value1":"phil"')
应该返回过滤后的查询集,因为
>>> tmp_str = '{"value1":"phil","value2":"jill"}'
>>> '"value1":"phil"' in tmp_str
True
关于mysql - Django MySQL 查询 Json 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43608570/