2013-08-23 85 views
1

我創建了一個表單,它使用mako模板將信息返回到表中的列表。我已經設置了在模板和視圖中點擊列表名稱時按字母順序從A-Z排序列表。從模板中訂購(Django)列表

問題是,我想能夠從Z-a訂購它,如果它再次點擊。 這是我的觀點:

def people(request): 

     sort = request.GET.get('sort','') 
     if sort != '': 
      var = sort 
      ppl = People.objects.order_by(var) 
    else: 
     ppl = People.objects.all() 

而且我template.mako:

<table class="table overview-table table-hover" id="people"> 
     <thead> 
     <tr> 
      <th><a href="${self.util.reverse('view_people')}?sort=first_name">First Name</th> 
      <th><a href="${self.util.reverse('view_people')}?sort=surname">Last name</th> 

     </tr> 
     </thead> 

如何得到這個工作

回答

0

我會說使用django-tables2顯示任何表的任何想法。它具有內置功能,可以按任意列進行排序,在用戶單擊列標題時以任一方向進行排序。它的功能非常全面,比試圖重新發明輪子要容易得多。

+0

我正在調查Django表2,但不幸的是項目經理並不想在項目中使用它 – Stephen

0

我想你將不得不爲你的排序超鏈接的查詢字符串創建一個額外的變量,稱爲「sort_direction」。當你的排序href被點擊時,你的視圖可以設置該變量爲「desc」並將其傳遞給模板。然後,當您的視圖再次收到它,並在GET變量看到「遞減」,你可以從Django的ORM顛倒順序:

ppl = People.objects.order_by('-var')

0

如何Tablesorter

<script type="text/javascript" src="/path/to/jquery-latest.js"></script> 
<script type="text/javascript" src="/path/to/jquery.tablesorter.js"></script> 

$(document).ready(function() 
{ 
    $("#myTable").tablesorter(); 
});