django中我們一般用orm進行資料的互動操作,單條件搜尋比較方便,那多條件呢?
吐槽完上面的,我們看看下面的**(models就不曬了,直接上views),多條件查詢一行**就能搞定,我之前還在自己寫if,else進行判斷取值
@login_required大致思路:通過request獲取對應的值,建立乙個空的字典,然後判斷每乙個字段是否為空,如果不為空就新增的字典中(如果需要其他字段自行新增),然後通過models進行查詢,apicase.object.filter(字典)def api_case_search(request):
"""apicase 搜尋
:param request:
:return:
"""project = project.objects.all().filter(flag=1)
page = request.get.get('page')
search_data = {}
project_id = request.get.get('project_id')
api_name = request.get.get('api_name')
api_url = request.get.get('api_url')
if project_id:
search_data['project_id'] = int(project_id)
if api_name:
search_data['api_name'] = api_name
if api_url:
search_data['api_url'] = api_url
search_data['flag'] = 1
get_all_path = request.get_full_path()
if get_all_path:
get_all_path = str(get_all_path).split('?')[1]
get_all_path = get_all_path.replace("&", "-")
log.info("get_all_path:%s" % get_all_path)
api_case = apicase.objects.filter(**search_data)
paginator = paginator(api_case, 20)
try:
contacts = paginator.page(page)
except pagenotaninteger:
# 如果請求的頁數不是整數,返回第一頁。
contacts = paginator.page(1)
except emptypage:
# 如果請求的頁數不在合法的頁數範圍內,返回結果的最後一頁。
contacts = paginator.page(paginator.num_pages)
return render(request, "api/apiindex.html", locals())
注意:這裡的字典要加上**,進行解包
django中如何實現多條件查詢
一 使用字典儲存查詢條件 獲取查詢條件 start date request.post.get start date end date request.post.get end date order type request.post.get order type order nature requ...
SSH框架中的多條件搜尋功能
記得第一次接觸專案的任務就是實現多條件搜尋的功能。由於本人菜鳥一枚,也是第一次寫部落格,想做做網路筆記,各位大牛有什麼更好的方法,希望能提出來,借鑑借鑑,相互學習,共同進步。我做的多條件搜尋功能的思路就是拼接sql語句或者拼接hql語句,我相信各位大牛們也會懂。舉個例子 學生表 id,學號,姓名,年...
yii2中sphinx搜尋 多條件選擇搜尋
案例要求,效果圖 那麼,安裝完成後,開啟sphinx 即你所建的sphinx安裝目錄 找到這個檔案,sphinx etc csft mysql.conf檔案,在編譯器中,開啟這個檔案,修改sphinx的原始檔,配置 改完配置後,停止sphinx服務,開啟cmd,進入到你安裝的sphinx安裝目錄中 ...