我是Python / Django的新手,我有一个问题。 我需要从多维字典(JSONField)中获取由Value过滤的QuerySet。 到目前为止,我得到了这个:
def make_cond(name, value):
from django.utils import simplejson
cond = simplejson.dumps({key:value})[1:-1] # remove '{' and '}'
return ' ' + cond # avoid '"'
Post.objects.filter(JSONField__contains=make_cond('key', 'value'))
这有效,但仅适用于字典的第一维。 我怎样才能达到其他尺寸?
答案 0 :(得分:0)
SQL无法帮助您。
给定一个任意的json对象,其序列化可能如下所示,
'{"a": {"c": "C", "b": "B"}, "c": {}, "b": {"e": "E", "d": "D"}}'
你必须构建一个LIKE子句,比如{"a"
,然后是另一个{
,然后"b": "B"
,而不关心代替"c": "C"
的内容。一个LIKE子句仅支持前后的通配符,因此无法获得所需的内容。
你可以用全文索引来解决它;你可以试试干草堆或狮身人面像。
但是,正确的工作工具是像mongodb这样的NoSQL数据库。