2010-01-29 109 views
1

我有一个ManyToManyField的Django模型,我想在我的模板中以逗号分隔的列表中迭代该字段的内容。我收到了一些意想不到的结果。Django新手ManyToManyField模板问题

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

内容正在显示,因为它们存在于数据库中,但它们以意想不到的方式显示出来......即,代替:

文艺复兴,巴洛克,表现主义

我得到:

R,E,N,A,I,S,S,A,N,C,E ,, B, a,r,o,q,u,e ,, E,x,p,r,e,s,s,i,o,n,i,s,t

任何想法我做错了?本来以为连接模板过滤器就是为了这种类型的场景,但也许正确的做法是创建一个模型的自定义方法...

回答

6

Ignacio Vasquez-Abrams是正确的(和往常一样)。解决您的问题可能在于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 – 2010-01-29 02:41:39

0

item.style返回一个字符串,所以你加入每个字符,而不是每个项目。