मुझे नहीं पता, अगर मुझे आपका प्रश्न मिलता है, लेकिन
Model.objects.filter(x=x, y__isnull = False, z=z)
आपको क्वेरीसेट देता है, जहां y
कॉलम गैर-शून्य है (IS NOT NULL
)।
यहां प्रासंगिक दस्तावेज।
संपादित करें:जांचें कि क्या y कोई नहीं है और गतिशील रूप से अपना क्वेरीसेट बनाएं:
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)