django 中多條件搜尋

2022-06-04 08:33:11 字數 1612 閱讀 2984

django中我們一般用orm進行資料的互動操作,單條件搜尋比較方便,那多條件呢?

吐槽完上面的,我們看看下面的**(models就不曬了,直接上views),多條件查詢一行**就能搞定,我之前還在自己寫if,else進行判斷取值

@login_required

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())

大致思路:通過request獲取對應的值,建立乙個空的字典,然後判斷每乙個字段是否為空,如果不為空就新增的字典中(如果需要其他字段自行新增),然後通過models進行查詢,apicase.object.filter(字典)

注意:這裡的字典要加上**,進行解包

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安裝目錄中 ...