我有一个带有ManyToManyField的Django模型,我试图在模板中以逗号分隔的列表中迭代该字段的内容。我得到了一些意想不到的结果。
{% 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
知道我做错了什么吗?本来可以认为连接模板过滤器适用于这种类型的场景,但也许正确的方法是创建模型的自定义方法...
答案 0 :(得分:7)
Ignacio Vasquez-Abrams是正确的(像往常一样)。问题的解决方案可能在于forloop变量。
<p>{% for item in painting.style.all %}
{{item.style}} {% if not forloop.last %}, {% endif %}
{% endfor %}</p>
答案 1 :(得分:0)
item.style
正在返回一个字符串,因此您要使用,
而不是每个项目加入每个字符。