Django中多条件查询解决方法


Django中多条件查询解决方法
原创Li-boss 最后发布于2018-08-07 19:57:17 阅读数 10168 收藏
展开
title: Django中多条件查询解决方法
date: 2018-08-07 19:10:46
tags: django中对条件查询
一些cms项目都会使用到多条件查询,我们后端如何处理请求的条件呢?

满足一个条件

满足两个条件

满足多个条件

………………….

这样处理起来会非常的老火. 其实有多方法比如(传参数,传字典,传Q对象,传F对象....)陷入深深的思考中................................怎么用做简单的方法把这个需求解决了.

个人觉得.把我们的查询的所有条件来构建一个字典来查询起来比较高效.具体如何操作见下面的代码:

视图函数.

def order_list(request):
   
   if request.method == 'GET':
       return render(request, 'admin/order_list.html')
​
   if request.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()
       # 如果有这个值 就写入到字典中去
       if case_order:
           search_dict['loan_id'] = case_order
       if case_name:
           search_dict['name'] = case_name
       if idno:
           search_dict['user_card'] = idno
       if loan_date:
           search_dict['pri_date'] = loan_date
       if state:
           # 通过关联关系查询出来需要的数据
           state_info = StatuTable.objects.filter(statu_name=state).first()
​
           search_dict['statu_id'] = state_info.statu_id
       if dk_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() for user_order in user_order_info]
​
       data = {
           'code': 200,
           'data_info': data_info
      }
       return JsonResponse(data)

 


Models见上一
————————————————
版权声明:本文为CSDN博主「Li-boss」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_33196814/article/details/81487442


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM