ORリストをフィルタリングするためにQのリストを渡すにはどうすればよいですか?私はどうなるリストなしORリストをフィルタリングするためにQのリストを渡すにはどうすればよいですか?
q_list = [Q(xyz__isnull=True), Q(x__startswith='x')]?
:ような何か
Model.objects.filter(Q(xyz__isnull=True) | Q(x__startswith='x'))
ORリストをフィルタリングするためにQのリストを渡すにはどうすればよいですか?私はどうなるリストなしORリストをフィルタリングするためにQのリストを渡すにはどうすればよいですか?
q_list = [Q(xyz__isnull=True), Q(x__startswith='x')]?
:ような何か
Model.objects.filter(Q(xyz__isnull=True) | Q(x__startswith='x'))
使用Pythonの削減()関数:
import operator
reduced_q = reduce(operator.or_, q_list)
Model.objects.filter(reduced_q)
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
を真剣に。わたしは、あなたを愛しています。感謝します。 – Axel
'reduce'はPython 3では既に組み込まれていないので、代わりにhttps://docs.python.org/3/library/functools.html#functools.reduceを使うことができます。 –