按模板中的属性对Django对象进行排序

时间:2016-08-19 14:32:25

标签: django django-templates

我有一个模型,Item,有几个属性,如名称,类型和所有者。在我的模板中,项目列表被迭代并显示在表格中。我想要做的是当点击桌面旁边的按钮时重新排序表格中的项目,即当点击名称旁边的按钮时,表格中的元素按字母顺序排序。这是我的模板:

{% extends 'inventory/base.html' %}

{% block content %}
<a class="btn btn-default" href="{% url 'inventory:entry' %}">New Item</a>
<script>
    jQuery(document).ready(function($) {
    $(".clickable-row").click(function() {
        window.location = $(this).data("href");
    });
});
</script>
{% if item_list %}
    <table>
        <tr>
            <th>Name <button class="btn btn-default" href="order_table"></button></th>
            <th>Type <button class="btn btn-default" href="order_table"></button></th>
            <th>Barcode/Model No. <button class="btn btn-default" href="order_table"></button></th>
            <th>Owner <button class="btn btn-default" href="order_table"></button></th>
            <th>Edit <button class="btn btn-default" href="order_table"></button></th>
        </tr>
        {% for item in item_list %}
            <tr class="clickable-row itemrow" data-href="{% url 'inventory:details' item.id %}">
                <td>{{ item.name }}</td>
                <td>{{ item.itemType }}</td>
                <td>{{ item.barcode }}</td>
                <td>{{ item.owner.username }}</td>
                <td><a href="{% url 'inventory:edit' item.id %}" class="btn btn-default">Edit</a></td>
            </tr>
        {% endfor %}
    </table>
{% endif %}
{% endblock %}

1 个答案:

答案 0 :(得分:1)

而不是按钮使用链接并将参数传递给视图:

<th><a href="{{ url('myurl') }}?sort=name">Name </a></th>

在django视图中,您可以使用:request.GET.get('sort', 'your_default_sort')检索sort参数,并使用它来对查询集进行排序。如果你正在使用FBV在功能中手动更改它,如果你正在使用CBV,只需覆盖你班级的get_ordering()方法

然而,使用像datatables

这样的客户端解决方案会更容易

希望这有帮助

相关问题