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

それは機能しますが、dict の 1 次元に対してのみです。どうすれば他の次元に到達できますか?

4

1 に答える 1

0

SQL はそれを助けることはできません。

シリアル化が次のように見える任意の json オブジェクトが与えられた場合、

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

たとえば、{"a"に一致する LIKE 句を構築する必要があります。LIKE 句は前後にしかワイルドカードを使用できないため、目的のものが得られません。{"b": "B""c": "C"

フルテキスト インデックスを使用して把握できる可能性があります。そのためには、Haystack または Sphinx を試すことができます。

ただし、この仕事に適したツールは、mongodb のような NoSQL データベースです。

于 2012-10-25T01:20:18.953 に答える