(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模糊查询,功能实现
浙公网安备 33010602011771号