可能重複:
filter using Q object with dynamic from user?如何從request.GET參數創建過濾器?
我的工作我的應用程序的過濾功能。我發送一個逗號分隔的字符串通過jQuery到Django(在jquery中我用+替換空間,以便它可以通過電線發送)。
/?ajax&sales_item=t2,+t1
現在,在我查看GET參數的視圖中,我可以看到Django已經用空格替換了+,這非常棒。然後,我用逗號分割關鍵字並去掉空格。
sales_item_raw = request.GET['sales_item']
sales_item_keywords = sales_item_raw.split(',')
我首先需要檢查給定的名稱是否作爲銷售項目存在。我必須使用icontains
,因此sales_items
可以是多個項目。
for item in sales_item_keywords:
sales_items = profile.company.salesitem_set.filter(item_description__icontains=item.strip())
最後但並非最不重要的查詢集用於過濾交易對給定sales_items:如果有兩個關鍵字然而
deals_queryset = deals_queryset.filter(sales_item__in=sales_items)
如果用戶過濾器只有一個關鍵字,將做工精細,在每次循環迭代中明顯會覆蓋sales_items
。
什麼是解決這個問題的最高性能的方法?我應該在每次迭代時將sales_items
的內容追加到循環外的列表中嗎?並最終將新列表發送到最終deals_queryset.filter
?
我不知道這是否是解決這個問題的好辦法......
「我送通過jQuery分隔字符串的Django(逗號在jquery中,我用+替換空格,以便它可以通過電線發送)。「沒有必要; Django沒有問題處理多個GET參數[具有相同名稱](http://stackoverflow.com/q/4359238/20862)。 –
感謝您指出。它不是關於多個GET參數,如果我沒有用+替換空格,我只會得到傳入的第一個參數。'/?ajax&sales_item = t2,'空格刪除了第二個參數。至少這是我的服務器上發生的事情。 – Houman
'/?ajax&sales_item = t2&sales_item = t1' –