django中的双可排序表列

时间:2015-04-14 11:33:51

标签: python html django

我找到了问题的部分解决方案 - django中的排序表(Sortable table columns in django

我正在编写一个任务管理器应用程序。这是模型的一部分

class Item(models.Model):
    author = models.ForeignKey(User)
    name = models.CharField('Brief summary of job', max_length=200)
    created = models.DateTimeField('Created', auto_now=True,auto_now_add=True)
    description = models.TextField('Description of job')

我有一个索引页面,我想将所有作业存储在可排序的表中。这是视图中的功能

def index(request):
    order_by = request.GET.get('order_by', 'deadline')
    jobs_list = Item.objects.all().order_by(order_by)
    context = {'jobs_list': jobs_list}
    return render(request, 'nc_jobs/index.html',context)

和表格的html模板

<table class="table table-striped table-bordered">
    <th><a href="?order_by=name">Name</a></th>
    <th><a href="?order_by=author">From</a></th>
    <th><a href="?order_by=job_for">FAO</a></th>
    <th><a href="?order_by=priority">Priority</a></th>
    <th><a href="?order_by=deadline">Deadline</a></th>
    <th><a href="?order_by=progress">Progress</a></th>
    <th><a href="?order_by=done">Done</a></th>
    {% for item in jobs_list %}
    <tr>
       <td><a href="/nc_jobs/{{ item.id }}/">{{ item.name }}</a></td>
       <td> {{ item.author }} </td>
       <td> {{ item.job_for }} </td>
       <td> {{ item.priority }} </td>
       <td> {{ item.deadline }} </td>
       <td> ...

有没有办法可以编辑这段代码,以便在第二次点击表格标题后,我可以按相反的顺序对任何列进行排序。如果我再次单击此列标题,它将按默认顺序求助?

由于

1 个答案:

答案 0 :(得分:1)

我过去曾使用django-sorting,这对你的需要有好处。它将为列提供升序和降序。

{% load sorting_tags %}
{% anchor name "Name" %}
{% anchor author "From" %}
{% autosort jobs_list %}