【Django】组合条件的搜索功能实现

一直想着如何做组合条件的搜索!
如:前端有三个输入框....输入后过滤,后台写一条语句匹配前端所有可能产生的组合。总共七种
伪sql大概如下:
  1. select * from t where a=

  2. select * from t where b=

  3. select * from t where c=

  4. select * from t where a=and b=

  5. select * from t where a=and c=

  6. select * from t where b=and c=

  7. select * from t where a=and b= and c

组合条件越多,越复杂,用if 什么的来判断,太复杂了!试着想用Q() F()函数来实现,也很麻烦!最后参照别人的思路,用**kargs反向匹配解决!
思路如下:
  1. 符合条件的放入字典,反向filter过滤即可!
  2. >>> condition = {}
  3. >>> condition['db_type']=1
  4. >>> condition['dport']=3306
  5. >>> result=edatabase.objects.filter(**condition)
  6. >>> result
  7. <QuerySet [<edatabase: edatabase object>, <edatabase: edatabase object>, <edatabase: edatabase object>]>
  8. >>> for i in result:
  9. ... print i.id,i.db_type,i.dport
  10. ...
  11. 1 1 3306
  12. 2 1 3306
  13. 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/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值