ITPub博客

首页 > 应用开发 > IT综合 > 【Django】组合条件的搜索功能实现

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

原创 IT综合 作者:小亮520cl 时间:2018-04-12 15:57:29 0 删除 编辑
一直想着如何做组合条件的搜索!
如:前端有三个输入框....输入后过滤,后台写一条语句匹配前端所有可能产生的组合。总共七种
伪sql大概如下:
  1. select * from t where a=?
  2. 或
  3. select * from t where b=?
  4. 或
  5. select * from t where c=?
  6. 或
  7. select * from t where a=? and b=
  8. 或
  9. select * from t where a=? and c=
  10. 或
  11. select * from t where b=? and c=
  12. 或
  13. 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博客 ” ,链接:https://blog.itpub.net/29096438/viewspace-2152857/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
毕业以后专业任职数据库工程师职位,itpub一直作为自己的笔记记录的地方,blog写的不详细,草书笔记,仅供参考!

注册时间:2013-09-12

  • 博文量
    529
  • 访问量
    1126890