2015-12-11 4 views
0

Предположим, у меня есть список стран, и я хочу отобразить их группировку по континентам. Моего models.py выглядит следующим образомСписок групп в django

class Countries(models.Model): 
    name = models.CharField(max_length=200) 
    continent = models.CharField(max_length=200) 

И мой views.py выглядит следующим образом:

class ListCountriesView(ListView): 
    model = Countries 
    template_name = 'country_list.html' 

Моего HTML отображается на следующий списке

Asia 
Japan 
Asia 
S.Korean 
Asia 
China 
Asia 
India 
Europe 
Germany 
Europe 
France 
Europe 
Belgium 
Africa 
Ghana 

Моего country_list.html выглядит например:

<html> 
<table> 
<tr><th>Country</th></tr> 
{% for country in object_list%} 
    <td>kpi.continent</td> 
    <tr><td>country.name</td></tr> 
</table> 
</html> 

Я хочу отобразить имя континента один раз, а затем соответствующие коучи. Я не могу понять, как сгруппировать список по континенту. Есть ли какая-либо функция fltter, которую я могу использовать в шаблоне django?

ответ

1

Да. Там, конечно, есть:

{% regroup object_list by continent as continents_list %} 

<ul> 
{% for continent in continents_list %} 
    <li>{{ continent.grouper }} 
    <ul> 
     {% for item in continent.list %} 
      <li>{{ item.name }}</li> 
     {% endfor %} 
    </ul> 
    </li> 
{% endfor %} 
</ul> 

Больше в документации: https://docs.djangoproject.com/en/1.9/ref/templates/builtins/#regroup

+0

Ничего себе, в значительной степени тот же самый пример в Django Docs! –

+0

yep. django docs довольно удивительны. если это ответит на ваш вопрос, не возражаете ли вы отметь ответ? спасибо – miki725

+0

@ miki725 да, это определенно решило мою проблему пока. Благодаря тонну. – blues

Смежные вопросы