2013-05-21 42 views
2

反向外键我有以下for循环我在模板中创建:如何订购在Django

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

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

回答

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