Django模型多字段模糊查询实现方法
本文介绍如何在Django模型中实现多字段的模糊查询。通过利用双下划线语法(如__contains或__icontains),可以灵活地对多个字段进行大小写敏感或不敏感的匹配。结合逻辑判断,可构建复杂的搜索条件,适用于API接口开发中的多条件过滤场景。
Django多字段模糊查询语法
在Django模型中执行多字段模糊查询时,需使用双下划线语法。具体而言,双下划线前指定目标字段名,后接查询操作符。常用的操作符包括icontains(忽略大小写)和contains(区分大小写),二者区别在于是否对字符大小写进行敏感匹配。在构建查询条件时,竖线符号(|)通常用于表示逻辑“或”的关系,从而实现对多个字段的组合筛选。
API接口中的多条件过滤实现
#搜索功能
@csrf_exempt#使用@csrf_exempt装饰器,免除csrf验证
def search_testCaseApi(request):
if request.method == 'POST':
name = request.POST.get('task_name')
updateUser=request.POST.get('task_updateUser')
if name=="" and updateUser=="":
obj_all = tnw_test_case_api.objects.filter(del_flag=0)
elif name!="" and updateUser=="":
obj_all = tnw_test_case_api.objects.filter(del_flag=0,case_name__contains=name)
elif name=="" and updateUser!="":
obj_all = tnw_test_case_api.objects.filter(del_flag=0,update_user__contains=updateUser)
else:
obj_all = tnw_test_case_api.objects.filter(del_flag=0,case_name__contains=name,update_user__contains=updateUser)
ApiCasesList = []
for li in obj_all:
need_interfacename = allFunction().get_interfaceName(li.id)
api_list, api_sum = allFunction().testIDConnect_needid(li.id)
if li.case_module is not None:
ApiCasesList.append({
"testCaseApi_id": li.id,
"testCaseApi_name": li.case_name,
"testCaseApi_sum": api_sum,
"testCaseApi_version": li.case_version,
"testCaseApi_module": li.case_module,
"testCaseApi_need_interfacename": need_interfacename,
"testCaseApi_createTime": str(li.create_time),
"testCaseApi_updateTime": str(li.update_time),
"testCaseApi_updateUser": li.update_user,
})
else:
ApiCasesList.append({
"testCaseApi_id": li.id,
"testCaseApi_name": li.case_name,
"testCaseApi_sum": 1,
"testCaseApi_version": li.case_version,
"testCaseApi_module": li.case_module,
"testCaseApi_need_interfacename": need_interfacename,
"testCaseApi_createTime": str(li.create_time),
"testCaseApi_updateTime": str(li.update_time),
"testCaseApi_updateUser": li.update_user,
})
# 将int类型使用dumps()方法转为str类型
ApiCasesList_len = json.dumps(len(ApiCasesList))
# 构造一个字典
json_data_list = {'rows': ApiCasesList, 'total': ApiCasesList_len}
# dumps()将字典转变为json形式,
easyList = json.dumps(json_data_list)
# 将json返回去,json的键值对中的键需要与前台的表格field=“X”中的X名称保持一致)
return HttpResponse(easyList)
以上内容为Django模型模糊查询的示例说明,旨在提供实用的参考方案。希望读者能从中获得帮助,并欢迎继续支持本站获取更多技术分享。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









