一直想着如何做组合条件的搜索!
如:前端有三个输入框....输入后过滤,后台写一条语句匹配前端所有可能产生的组合。总共七种
伪sql大概如下:
-
select * from t where a=?
-
或
-
select * from t where b=?
-
或
-
select * from t where c=?
-
或
-
select * from t where a=? and b=
-
或
-
select * from t where a=? and c=
-
或
-
select * from t where b=? and c=
-
或
-
select * from t where a=? and b= and c
组合条件越多,越复杂,用if 什么的来判断,太复杂了!试着想用Q() F()函数来实现,也很麻烦!最后参照别人的思路,用**kargs反向匹配解决!
思路如下:
-
符合条件的放入字典,反向filter过滤即可!
-
>>> condition = {}
-
>>> condition['db_type']=1
-
>>> condition['dport']=3306
-
>>> result=edatabase.objects.filter(**condition)
-
>>> result
-
<QuerySet [<edatabase: edatabase object>, <edatabase: edatabase object>, <edatabase: edatabase object>]>
-
>>> for i in result:
-
... print i.id,i.db_type,i.dport
-
...
-
1 1 3306
-
2 1 3306
-
9 1 3306
参考:
https://www.cnblogs.com/wt11/p/6431071.html
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29096438/viewspace-2152857/
,如需转载,请注明出处,否则将追究法律责任。