2012-10-14 14 views
0

當我選擇排序時,我無法真正包含每頁篩選器。 如何讓這些過濾器彼此「可見」?我需要什麼包括或閱讀?Django如何鏈接通過GET請求進行排序和篩選

這是我view.py

if order == 'asc': 
    p = p.order_by('name') 
elif order == 'desc': 
    p = p.order_by('-name') 
elif order == 'price_asc': 
    p = p.order_by('price_netto') 
elif order == 'price_desc': 
    p = p.order_by('-price_netto') 
else: 
    p.order_by('name') 

if limit == "12": 
    per_page = "12" 
elif limit == "24": 
    per_page = "24" 
elif limit == "48": 
    per_page = "48" 
else: 
    from endless_pagination.settings import PER_PAGE 
    per_page = PER_PAGE 

HTML

 <select onchange="location = this.options[this.selectedIndex].value"> 
      <option value="">--- Sortowanie ---</option> 
      <option rel="order" value="?order=desc">Malejąco według nazwy</option> 
      <option rel="order" value="?order=asc">Rosnąco według nazwy</option> 
      <option rel="order" value="?order=price_asc">Rosnąco według ceny</option> 
      <option rel="order" value="?order=price_desc">Malejąco według ceny</option> 
     </select> 
     Produktów na stronę: 
     <a rel="limit" href="?limit=12">12</a>, <a rel="limit" href="?limit=24">24</a>, <a rel="limit" href="?limit=48">48</a> 

回答

0

爲什麼不使用JavaScript,jQuery的一小部分。你需要一個函數來讀取查詢字符串並覆蓋你正在改變的項目。

<select id="sort-dropdown"> 
     <option value="">--- Sortowanie ---</option> 
     <option rel="order" value="desc">Malejąco według nazwy</option> 
     <option rel="order" value="asc">Rosnąco według nazwy</option> 
     <option rel="order" value="price_asc">Rosnąco według ceny</option> 
     <option rel="order" value="price_desc">Malejąco według ceny</option> 
    </select> 
    Produktów na stronę: 
    <a rel="limit" id="limit-12" href="#">12</a>, <a rel="limit" id="limit-24" href="#">24</a>, <a rel="limit" id="limit-48" href="#">48</a> 

然後JavaScript的樣子:

function getParameterByName(name) 
{ 
    name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]"); 
    var regexS = "[\\?&]" + name + "=([^&#]*)"; 
    var regex = new RegExp(regexS); 
    var results = regex.exec(window.location.search); 
    if(results == null) 
    return ""; 
    else 
    return decodeURIComponent(results[1].replace(/\+/g, " ")); 
} 
function redirect(order, limit) { 
    window.location.url = "?order=" + order + "&limit=" + limit; 
} 

$("#sort-dropdown").change(function() { 
    redirect($(this).val(), getParameterByName("limit")); 
}); 

$("#limit-12").change(function() { 
    redirect(getParameterByName("order"), "12"); 
}); 

$("#limit-24").change(function() { 
    redirect(getParameterByName("order"), "24"); 
}); 

$("#limit-48").change(function() { 
    redirect(getParameterByName("order"), "48"); 
}); 
+0

我將試圖實現。無論如何,是否有可能做到這一點沒有JS和jQuery?只有django的功能?只是問問。 – Efrin