1

我是Python/Django的新手,我有一個問題。 我需要獲取由多維字典(JSONField)中的值過濾的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

SQL無法幫助你。

給定任意JSON對象,其序列可能是這樣的,

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

你必須構建匹配,比如一個LIKE子句,{"a",然後又{然後"b": "B"不關心什麼是在地方"c": "C"。一個LIKE子句只在前後支持通配符,所以你不能得到你想要的。

有可能你可以用全文索引找出它;你可以試試Haystack或獅身人面像。

但是,該工作的正確工具是像MongoDB這樣的NoSQL數據庫。

+0

謝謝,我接受了Like子句;) – Jan