python orm 能否实现类似于SQL语句中的like"%"表示所有的效果?

环境介绍:
id和pid都是通过用户界面输入的,正常情况下如果客户两个都输入的话,sql语句中的
input_id = request.POST.get('post_id')
input_pid = request.POST.get('post_pid')
where id = "%s" and pid = “%s”%(input_id,input_pid)

但是有一种情况下,用户可能有一个变量不输入表示查询所有,我用sql实现的时候就可以用sql中的like方法实现,比如:
input_id = request.POST.get('post_id') #input id如果没有输入我可以直接用%代替,这样就实现了不去做判断,用户是否输入下xxx变量,我再去更改sql语句的麻烦
input_pid = request.POST.get('post_pid')
where client_id like "%s" and isp_id like "%s" %(input_id,input_pid)
SQL语句Like "%"表示所有

数据库查询环境:
django orm环境:
input_id = request.POST.get('post_id')
input_pid = request.POST.get('post_pid')
ret = models.ip_list.objects.filter(id=post_id,pid=post_pid)
用户有一种情况下只输入了一种变量,我需要去做判断,如果有很多种用户输入条件时,那个判断是指数级增加。

第1个回答  2021-07-23
使用 if ... else ...表达式
input_id = request.POST.get('post_id')
input_pid = request.POST.get('post_pid')
where id like "\%%s" and pid like "\%%s”%(input_id if input_id else "",input_pid if input_pid else '')
相似回答