【问题标题】:Ordering queryset client-side, Django + TwitterBoostrap订购查询集客户端,Django + TwitterBoostrap
【发布时间】:2013-01-12 12:06:14
【问题描述】:

我有以下:

models.py

class Person(models.Model):
    full_name = models.CharField(...)
    address = models.CharField(...)

views.py

def all_persons(request):
    persons = Person.objects.all()
    return render(
        request, 
        'my_template.html', 
        {
            'persons':persons
        }
    )

my_template.html

<table class="table table-striped">
    <thead> 
    <tr> 
    <th>Person's Fullname</th>
    </tr>
    </thead> 
    <tbody>
    {% for person in persons %}
        <td>{{ person.full_name }}</td>
        <td>{{ person.address }}</td>

好的,所以代码会在模板中显示一个无序列表的人员,当然我可以按人员的姓名或地址进行排序,我想让用户可以按任何字段进行排序,我想要通过模板中表格的每一列上的按钮来完成此操作。例如 full_name 顶部的按钮和 address 顶部的按钮,如果其中任何一个被按下,则列表应根据按下的按钮排序。

非常感谢您的阅读,希望您能帮到我。

编辑:我使用 Twitter Boostrap 2,所以 tablesorter 和 DataTables JS 无法工作。

【问题讨论】:

  • 如果所有数据都已经发送到客户端,为什么不直接在Javascript中做呢?
  • 你在使用 django-tables2 吗?如果是这样,排序是内置的:django-tables2.readthedocs.org/en/latest.
  • 你必须在屏幕上创建一个按钮,当用户点击它时,你运行一个排序数据的方法,或者只是发送一个 SQL 到数据库并检索排序的数据
  • @user1775603 不,我没有使用 django-tables2,但似乎是一个不错的模块,我会考虑的。
  • 也许您可以将persons 转换为字典并使用此标签docs.djangoproject.com/en/1.4/ref/templates/builtins/#dictsort

标签: python django twitter-bootstrap django-templates


【解决方案1】:

查看这个用于 HTML 表格的 JS 插件:Datatables。带有排序,过滤,分页,很多插件。上手容易,但你可能会觉得它有点臃肿。

另一种方法是让视图接受一个额外的参数(例如,一个表示字段的整数),按此字段对查询集进行排序并呈现模板。

【讨论】:

  • 我刚刚检查过了,现在的问题是我使用的是 Twitter bootstrap 2,并且 Bootstrap 不支持排序,这很烦人。
猜你喜欢
  • 2023-03-10
  • 1970-01-01
  • 2012-01-18
  • 2011-08-20
  • 1970-01-01
  • 2021-07-02
  • 1970-01-01
  • 2013-03-25
  • 2019-02-02
相关资源
最近更新 更多