一直想着如何做组合条件的搜索!
如:前端有三个输入框....输入后过滤,后台写一条语句匹配前端所有可能产生的组合。总共七种
伪sql大概如下:
组合条件越多,越复杂,用if 什么的来判断,太复杂了!试着想用Q() F()函数来实现,也很麻烦!最后参照别人的思路,用**kargs反向匹配解决!
思路如下:
参考:
https://www.cnblogs.com/wt11/p/6431071.html
如:前端有三个输入框....输入后过滤,后台写一条语句匹配前端所有可能产生的组合。总共七种
伪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博客 ” ,链接:http://blog.itpub.net/29096438/viewspace-2152857/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/29096438/viewspace-2152857/