解决Django中多条件查询的问题-创新互联
tags: django中对条件查询
创新互联自2013年起,先为通山等服务建站,通山等地企业,进行企业商务咨询服务。为通山企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。一些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)
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
标题名称:解决Django中多条件查询的问题-创新互联
浏览地址:http://pwwzsj.com/article/cdiheo.html