Saya tidak tahu, jika saya mendapatkan pertanyaan Anda, tetapi
Model.objects.filter(x=x, y__isnull = False, z=z)
memberi Anda queryset, di mana y kolom bukan nol (IS NOT NULL ).
Ini dokumentasi yang relevan.
EDIT:Periksa apakah y adalah Tidak Ada dan buat kumpulan kueri Anda secara dinamis:
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)
...
Jika ada terlalu banyak argumen yang harus dihadapi, Anda bisa menggunakan sesuatu seperti ini; dengan asumsi bahwa x , y , z disimpan dalam kamus 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)