2013-05-21 39 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