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

时间:2009-04-02 15:05:31

标签: python django-templates

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

我有:

{% for field in form %}
    {{ field }}
{% end for %}

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

{% for field in form%}
    {% if field == title %}
    {% else %}
        {{ field }}
    {% endif %}
{% endfor %}

有可能吗?我必须在很多领域逐一编写它们,只有一两个要排除。

感谢您的任何提示。

BR, Czlowiekwidmo。

2 个答案:

答案 0 :(得分:10)

是的,这应该是可能的:

{% for field in form %}
    {% ifnotequal field.label title %}
        {{ field }}
    {% endifnotequal %}
{% endfor %}

Django的template tags提供ifequalifnotequal变体,您可以针对上下文变量或字符串测试field.label。

答案 1 :(得分:7)

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

class SmallerForm( MyForm ):
    class Meta(MyForm.Meta):
        exclude = [ title ]