【Django】組合條件的搜尋功能實現

小亮520cl發表於2018-04-12
一直想著如何做組合條件的搜尋!
如:前端有三個輸入框....輸入後過濾,後臺寫一條語句匹配前端所有可能產生的組合。總共七種
偽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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章