如何在Django列表中排序

时间:2012-04-03 08:27:44

标签: python django generics listview sorting

这是一份工作及其价格清单。 我需要排序方面的帮助。我希望这样做,以便当您单击按预算排序时,列表按预算减少排序,再次单击时更改为按预算增加排序。我不知道这是否需要一个新的页面站点/ findjob / sortbybudget,但我更喜欢在site / findjob中这样做。我将不胜感激任何我可以阅读的帮助或参考资料。

这是urls.py

from django.conf.urls.defaults import patterns, include, url

from project.preview.models import Task

info_task = {
    'queryset': Task.objects.all(),
    'template_name': 'template.html',
}

urlpatterns = patterns('',
    (r'^findtask/$', 'django.views.generic.list_detail.object_list', dict(info_task)),
)

这是:template.html

<div class="sortList">
**Sort by:**
<ul>
    <li class="sort"><a href=""/>Budget</a></li>
    <li class="sort"><a href=""/>Newly Added</li>
</ul>
</div>

<div class="taskListCon">
        {% for object in object_list %}
        <div class="taskCon">
          <div class="Title">
          {{ object.title_description }}
          </div>
          <div class="clientID">                    
          {{object.userid}}
          </div>
          <div class="Price">
          Budget:{{ object.max_budget }}
        </div>
<div>
{% endfor %}

3 个答案:

答案 0 :(得分:2)

我建议的解决方案不是重新发明轮子,而是享受一个可以重复使用的应用程序。

  

django-tables2   简化了将数据集转换为HTML表的任务。它有   原生支持分页和排序。它适用于HTML表格   django.forms为HTML表单做了什么。 e.g。

     

其功能包括:

     
      
  • 任何可迭代都可以是数据源,但包含对Django查询集的特殊支持。
  •   
  • 内置用户界面不依赖JavaScript。
  •   
  • 支持基于Django模型的自动表生成。
  •   
  • 通过子类化支持自定义列功能。
  •   
  • 分页。
  •   
  • 基于列的表格排序。
  •   
  • 模板标记,用于启用对HTML的简单渲染。
  •   
  • 用于Django 1.3的通用视图mixin。
  •   

Screenshot

答案 1 :(得分:2)

就个人而言,我会使用像jQuery tablesorter这样的东西来解决这个问题。这将为您节省每次往返服务器的往返次数。

文档:http://tablesorter.com/docs/

答案 2 :(得分:1)

另一种选择是使用django-filter。只需查看示例应用程序:

https://github.com/alex/django-filter