Django field.label_tag和field.errors没有出现在页面上

时间:2014-07-23 20:10:45

标签: django django-forms

我有一个Django表单,我试图通过模板显示,但由于一些奇怪的原因,当我尝试自定义模板时,字段属性都不会出现 - 特别是label_tagerrors

当我使用默认显示表单时,它们会显示:

{{ form.as_ul }}

但是当我尝试自定义它时,这些字段不会呈现:

{% for field in form %}
    <li>
        {{ field.label_tag }}<br/>
        {{ field.help_text }}
        {{ field }}
        {{ field.errors }}
    </li>
{% endfor %}

我尝试过显示每个attributes listed in the documentation,这只是field.errorsfield.label_tag的问题。即使只使用直线field.label也可以。此外,在其他页面的表单中,这些字段可以使用此方法正确显示。

这可能是什么原因?我可以添加任何其他可能相关的代码,但我不确定哪些内容可能有用,而且我不想在这里不必要地呕吐所有内容。

1 个答案:

答案 0 :(得分:0)

我发现了至少部分问题:

我提出的错误是在模型验证中,而不是表单验证。我仍然不确定为什么错误出现在{{ form.as_ul}}但是没有出现,但我能够通过将验证(clean方法)移动到表单来解决我自己的问题。

至于label_tag,我仍然不知道问题是什么,但它开始自发地再次运作。

编辑:我刚才弄明白了原因。模型验证与特定字段无关,因此ValidationError与字段无关,因此不会显示在{{ field.errors }}中。相反,它与{{ form.non_field_errors }}中的表单相关联。使用表单添加此标记会显示正确的错误。