解决Django中多条件查询的问题
tags:django中对条件查询
一些cms项目都会使用到多条件查询,我们后端如何处理请求的条件呢?
满足一个条件
满足两个条件
满足多个条件
………………….
这样处理起来会非常的恼火.其实有多方法比如(传参数,传字典,传Q对象,传F对象…)陷入深深的思考中…怎么用做简单的方法把这个需求解决了.
个人觉得.把我们的查询的所有条件来构建一个字典来查询起来比较高效.具体如何操作见下面的代码:
视图函数.
deforder_list(request): ifrequest.method=='GET': returnrender(request,'admin/order_list.html') ifrequest.method=='POST': #获取案件号 case_order=request.POST.get('case_order') #获取客户姓名 case_name=request.POST.get('case_name') #获取身份证号码 idno=request.POST.get('idno') #获取贷款日期 loan_date=request.POST.get('loan_date') #获取贷款状态 state=request.POST.get('state') #获取贷款类型 dk_type=request.POST.get('dk_type') #定一个字典用于保存前端发送过来的查询条件 search_dict=dict() #如果有这个值就写入到字典中去 ifcase_order: search_dict['loan_id']=case_order ifcase_name: search_dict['name']=case_name ifidno: search_dict['user_card']=idno ifloan_date: search_dict['pri_date']=loan_date ifstate: #通过关联关系查询出来需要的数据 state_info=StatuTable.objects.filter(statu_name=state).first() search_dict['statu_id']=state_info.statu_id ifdk_type: loa=LoantypeTable.objects.filter(loan_name=dk_type).first() search_dict['loa_loan_id']=loa.loan_id #多条件查询关键点在这个位置传如的字典前面一定要加上两个星号. user_order_info=UserTable.objects.filter(**search_dict) #序列化 data_info=[user_order.to_dict()foruser_orderinuser_order_info] data={ 'code':200, 'data_info':data_info } returnJsonResponse(data)
Models见上一篇文章
传送门Model
前端html页面
//使用jquery就必须引入//需要使用ajaxSubmit去提交表单就必须引入 //使用template.js渲染页面就必须引入 查询还款案件