2012-04-02 47 views
0

舉一個簡單的Django模型:分組模式由場在Django

class MyModel(models.Model): 
    a = models.CharField() 
    b = models.CharField() 

這取他們在一個視圖的查詢:

objs = MyModel.objects.all() 

現在,這裏的棘手的部分,模板應渲染對象與a字段相同。所以,如果我有三個對象:

{a:'1', b:'5'}, {a:'1', b:'8'}, {a:'2', b:'4'}

它們應該呈現這樣在輸出:

  • 一個= 1
    • B = 5
    • B = 8
  • a = 2,b = 4

基本上,我需要按照它們的a字段對對象進行分組,並呈現與具有唯一a字段的對象不同的對象。

我應該如何分組這些對象並以不同的方式顯示它們?

回答

2

通過a字段對它們進行排序,然後使用regroup標記對模板進行分組。

代碼示例:

{% regroup objs by a as objs_list %} 
<ul> 
    {% for a in objs_list %} 
    {% if a.list|length == 1 %} 
    <li>{{ a.grouper }}, {{ a.list.0.b }}</li> 
    {% else %} 
    <li>{{ a.grouper }} 
     <ul> 
     {% for obj in a.list %} 
     <li>{{ obj.b }}</li> 
     {% endfor %} 
     </ul> 
    {% endif %} 
    </li> 
    {% endfor %}  
</ul> 
+0

我有一種感覺,你將是第一個響應;)只是不知道它會那麼快。謝謝! – 2012-04-02 15:15:48

+0

丹尼爾,任何想法如何我可以檢查石斑魚,使那些與單個元素將呈現不同? – 2012-04-02 15:27:44

+0

我已更新您的示例以顯示您可能如何做到這一點。 – 2012-04-02 16:23:21