Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django新手ManyToManyField模板问题_Django_Django Templates - Fatal编程技术网

Django新手ManyToManyField模板问题

Django新手ManyToManyField模板问题,django,django-templates,Django,Django Templates,我有一个带有ManyToManyField的Django模型,我试图在模板中的逗号分隔列表中迭代该字段的内容。我得到了一些意想不到的结果 {% for painting in paintings_list %} <p>{% for item in painting.style.all %} {{ item.style|join:', ' }} {% endfor %}</p> {% endfor %} {%用于绘画中的绘画\u列表%} {

我有一个带有ManyToManyField的Django模型,我试图在模板中的逗号分隔列表中迭代该字段的内容。我得到了一些意想不到的结果

{% for painting in paintings_list %}
    <p>{% for item in painting.style.all %}
        {{ item.style|join:', ' }}
    {% endfor %}</p>
{% endfor %}
{%用于绘画中的绘画\u列表%}
{painting.style.all%中项目的%s}
{{item.style | join:','}}
{%endfor%}

{%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


知道我做错了什么吗?本以为联接模板筛选器正是针对这种类型的场景,但可能正确的方法是创建模型的自定义方法…

项。style
返回一个字符串,因此您将每个字符联接为
,而不是每个项。

Ignacio Vasquez Abrams是正确的(与往常一样). 问题的解决方案可能在于forloop变量

<p>{% for item in painting.style.all %}
  {{item.style}} {% if not forloop.last %}, {% endif %}
{% endfor %}</p>
{painting.style.all%中项目的%
{{item.style}{%if非forloop.last%},{%endif%}
{%endfor%}

指向文档的链接: