如何在django中订购反向外键

时间:2013-05-21 22:15:00

标签: python django

我在模板中创建了以下for循环:

    {% for task in item.task_set.all %}
        <li class="task">
            {{ task }}
        </li>
    {% endfor %}

有没有办法订购task_set。它目前按ID排序,但我想按任务名称订购。

1 个答案:

答案 0 :(得分:7)

如果您对任务始终按任务名称排序感到高兴,请使用ordering选项

class Task(models.Model):
    name = models.CharField(max_length=50)

    class Meta:
        ordering = ['name']

如果您想要与模型的默认排序不同的顺序,您可以在视图中设置任务的顺序,然后在模板中迭代tasks

# view
tasks = item.task_set.order_by('name')

# template
{% for task in tasks %}

无法更改模板中的排序,因为您无法将参数传递给{{ item.task_set.order_by }}。如果您确实需要在模板中指定查询集的顺序,则需要编写custom template filter