'for'遍历表单字段并使用'if'排除其中一个字段

Czl*_*dmo 4 python django-templates

我正在努力解决的问题如下:

我有:

{% for field in form %}
    {{ field }}
{% end for %}
Run Code Online (Sandbox Code Playgroud)

我想要的是使用'if'语句来排除.label或其他任何提供的字段.喜欢:

{% for field in form%}
    {% if field == title %}
    {% else %}
        {{ field }}
    {% endif %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

可能吗?我有很多字段要逐一编写,只有一两个要排除.

谢谢你的任何提示.

BR,Czlowiekwidmo.

Jar*_*die 10

是的,这应该是可能的:

{% for field in form %}
    {% ifnotequal field.label title %}
        {{ field }}
    {% endifnotequal %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

Django的模板标签提供ifequalifnotequal变体,您可以针对上下文变量或字符串测试field.label.

  • 但这并没有被弃用,所以简单的 {% if field.name == 'title' %} 就可以了。比较标签也不好,因为它可能会在翻译中发生变化。 (2认同)

S.L*_*ott 7

您可能更乐意创建表单的子类,不包括违规字段.见http://docs.djangoproject.com/en/dev/topics/forms/modelforms/#form-inheritance

class SmallerForm( MyForm ):
    class Meta(MyForm.Meta):
        exclude = [ title ]
Run Code Online (Sandbox Code Playgroud)