解决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渲染页面就必须引入 查询还款案件 
 
        