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