# ANDing Q objects
q_object = Q()
q_object.add(Q(), Q.AND)
# ORing Q objects
q_object = Q()
q_object.add(Q(), Q.OR)
>>> import operator
# create a list of Q objects
>>> mylist = [Q(question__contains='dinner'), Q(question__contains='meal')]
# OR
>>> Poll.objects.filter(reduce(operator.or_, mylist))
[<Poll: what shall I make for dinner>, <Poll: what is your favourite meal?>]
# AND
>>> Poll.objects.filter(reduce(operator.and_, mylist))
[]
この手法は、eBayのように、条件付きフィルターを使用してページのクエリを作成する場合に非常に役立つ場合があります。
しかし、私が知っているように、これは文書化されていないので、この問題にはどのようなベストプラクティスがあり、サポートから除外されることはなく、私のコードを読む人を混乱させることはありませんか?
ps
そしてまた-Q()オブジェクトで「&」演算子を使用するのは良い解決策ですか?Django-docsで、私はそれについて何も見つかりませんでした!