使用前后端分离时,常常接受到多个参数,当参数较小时,可以使用排列组合判断传入值是否为空,进行并列Q()查询。
if 条件1 and !条件2 and !条件3:
result = model.objects.filter(字段1 = 条件1).order_by('id')
......
if 条件1 and 条件2 and 条件3:
result = model.objects.filter(Q(字段1 = 条件1) & Q(字段2 = 条件2)& Q(字段3 = 条件3)).order_by('id')
但当条件十分多时,就不太好使用了,这时可以设置一个变量Q查询进行AND操作
filters = Q()
if 条件一:
filters = filters & Q(字段1 = 条件1)
if 条件二:
filters = filters & Q(字段2 = 条件2)
result = model.objects.filter(filters).order_by('id')