欢迎来到Louis的博客

人生三从境界:昨夜西风凋碧树,独上高楼,望尽天涯路。 衣带渐宽终不悔,为伊消得人憔悴。 众里寻他千百度,蓦然回首,那人却在灯火阑珊处。
扩大
缩小

(2019-1-18)Django - 模糊查询,使用Q对象

  上面这种搜索功能在我们的网页中是很常见的,来看下具体如何实现,

1.页面上的搜索框

  搜索框我们使用form表单来提交要搜索的字段数据,使用get方式提交

 

                <form action="" class="form-inline pull-right" style="margin-bottom: 5px">
                    <div class="form-group">
                        <label for="search">搜索</label>
                        <div class="input-group">
                            <input type="text" class="form-control" name="q" id="search">
                        </div>
                    </div>
                    <button type="submit" class="btn btn-primary">Search</button>
                </form>

 

2.后端的数据处理

  这里我们用到了Q对象来进行过滤条件处理

  后端代码片段

        queryset = self.model.objects.all()
      # 获取前端传来的查询条件 val
= request.GET.get('q', '')
      # search_fields为设置可查询字段的字段名
if self.search_fields and val:
      # 创建Q对象 search_condition
= Q()
      # 过滤条件设置为or search_condition.connector
= 'or'
      # 循环添加过滤条件 for field in self.search_fields: search_condition.children.append((field + "__icontains", val)) queryset = queryset.filter(search_condition)

 

   __icontains为字段模糊查询

 

我这里设置了支持title和price模糊查询,功能实现

 

posted on 2019-01-18 16:06  Louiszj  阅读(487)  评论(0)    收藏  举报

导航