从模板中订购(Django)列表

时间:2013-08-23 14:17:29

标签: python django

我创建了一个表单,使用mako模板将信息返回到表中的列表。我已将其设置为在模板和视图中单击列表名称时从A-Z按字母顺序排列列表。

问题是,如果再次点击它,我希望能够从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>

有关如何使其发挥作用的任何想法

3 个答案:

答案 0 :(得分:0)

我会说使用django-tables2来显示任何表格。它具有内置功能,可以在用户单击列标题时按任意方向排序。它的功能非常全面,并且比试图重新发明轮子更容易使用。

答案 1 :(得分:0)

我认为您必须为排序超链接的查询字符串创建一个额外的变量,称为“sort_direction”。单击sort href后,您的视图可以将该变量设置为“desc”并将其传递给模板。然后,当您的视图再次收到它并在GET变量中看到“desc”时,您可以从Django的ORM中撤消该命令:

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

答案 2 :(得分: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(); 
} );