2010-01-29 6 views
1

У меня есть модель Django с ManyToManyField, и я пытаюсь перебрать содержимое этого поля в список с разделителями-запятыми в моем шаблоне. Я получаю неожиданные результаты.Django Newbie ManyToManyField Template Question

{% for painting in paintings_list %} 
    <p>{% for item in painting.style.all %} 
     {{ item.style|join:', ' }} 
    {% endfor %}</p> 
{% endfor %} 

Содержимое отображается в их базе данных, но отображается непредвиденным образом ... т.е. вместо:

ренессанс, барокко, экспрессионизм

Я получаю:

R, е, п, а, я, s, s, а, п, с, е ,, B, a, r, o, q, u, e ,, E, x, p, r, e, s, s, i, o, n, i, s, t

Любая идея, что я делаю неправильно ? Считал бы, что фильтр шаблонов присоединился именно для этого типа сценария, но, возможно, правильным способом сделать это было бы создание настраиваемого метода модели ...

ответ

6

Игнасио Васкес-Абрамс является правильным (как обычно). Решение вашей проблемы может заключаться в переменных forloop.

<p>{% for item in painting.style.all %} 
    {{item.style}} {% if not forloop.last %}, {% endif %} 
{% endfor %}</p> 
+2

Ссылка на документацию: http://docs.djangoproject.com/en/1.1/ref/templates/builtins/#for –

0

item.style возвращает строку, так что вы объединение каждого символа с , вместо каждого элемента.