Tôi không biết, nếu tôi nhận được câu hỏi của bạn, nhưng
Model.objects.filter(x=x, y__isnull = False, z=z)
cung cấp cho bạn bộ truy vấn, trong đó y
cột không rỗng (IS NOT NULL
).
Đây là tài liệu liên quan.
CHỈNH SỬA:Kiểm tra xem y có phải là Không và tự động tạo bộ truy vấn của bạn:
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)
...
Nếu có quá nhiều đối số để giải quyết, bạn có thể sử dụng một cái gì đó như thế này; giả sử rằng x
, y
, z
được lưu trữ trong từ điển 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)