Python/Django でアプリケーションを作成しています。Python の operator.or_ 関数を使用して Q オブジェクトのリストを減らしてフィルターを作成しようとしています。AND
残念ながら、ではなくと組み合わされたリストになりoperator.or_
ます。この問題は、次のコードで発生します。
print 'operator.or_', operator.or_
filter = reduce(operator.or_, q_objects[key])
print key, '->', filter
ステートメント
print 'operator.or_', operator.or_
結果は
operator.or_ <built-in function or_>
それで成功したようです。でも、
filter = reduce(operator.or_, q_objects[key])
print key, '->', filter
結果は (書式が追加された状態で)
some_key -> (
AND:
('some_field__icontains', u'search string 1'),
('other_field__icontains', u'search string 2')
)
ご覧のとおり、結果にはAND
ではなく がありOR
ます。誰かが私が間違っていることを見ることができますか?
に関してq_objects[key]
は、次のように作成されます。
q_dict = {'some_field__icontains': u'search string 1', 'other_field__icontains': u'search string 2'}
q_objects[key] = [Q(**q_dict)]