質問があるかどうかはわかりませんが
Model.objects.filter(x=x, y__isnull = False, z=z)
クエリセットを提供します。ここで、y
列がnullではありません(IS NOT NULL
。
こちら 関連するドキュメント。
編集:yがNoneであるかどうかを確認し、クエリセットを動的に構築します:
if y is None:
qs = Model.objects.filter(x=x).filter(z=z)
elif z is None:
qs = Model.objects.filter(x=x).filter(y=y)
...
処理する引数が多すぎる場合は、次のようなものを使用できます。 x
と仮定します 、y
、z
辞書に保存されているyour values
:
your_values = { 'x' : 'x value', 'y' : 'y value', 'z' : 'value'}
arguments = {}
for k, v in your_values.items():
if v:
arguments[k] = v
Model.objects.filter(**arguments)