2009-03-19 16 views

答えて

15

使用Pythonの削減()関数:

import operator 
reduced_q = reduce(operator.or_, q_list) 
Model.objects.filter(reduced_q) 
+2

を真剣に。わたしは、あなたを愛しています。感謝します。 – Axel

+3

'reduce'はPython 3では既に組み込まれていないので、代わりにhttps://docs.python.org/3/library/functools.html#functools.reduceを使うことができます。 –

7

Qオブジェクトはまた別のQオブジェクトを取りadd方法を持っていますQコネクタ(ANDまたはORのいずれか)。

q_object = Q(xyz__isnull=True) 
q_object.add(Q(x__startswith='x'), Q.OR) 

私が構築またはフィルタするとき、これは有用であることがわかってきたと私は私のブログに長い例を書いた:"Adding" Q objects in Django

関連する問題