查询过滤多维字典中的值?

时间:2012-10-25 00:13:32

标签: python django dictionary django-queryset multidimensional-array

我是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')) 

这有效,但仅适用于字典的第一维。 我怎样才能达到其他尺寸?

1 个答案:

答案 0 :(得分:0)

SQL无法帮助您。

给定一个任意的json对象,其序列化可能如下所示,

'{"a": {"c": "C", "b": "B"}, "c": {}, "b": {"e": "E", "d": "D"}}'

你必须构建一个LIKE子句,比如{"a",然后是另一个{,然后"b": "B",而不关心代替"c": "C"的内容。一个LIKE子句仅支持前后的通配符,因此无法获得所需的内容。

你可以用全文索引来解决它;你可以试试干草堆或狮身人面像。

但是,正确的工作工具是像mongodb这样的NoSQL数据库。