使用crispy_forms和自定义模板时Django出错

时间:2014-02-28 19:25:19

标签: django django-templates django-crispy-forms

我在使用自定义模板通过crispy_forms创建的表单中显示默认错误时遇到问题。即,文本“此字段是必需的”。两个字段不存在。

请参阅here

这是表单的初始化代码:

        ...
        start_time = forms.TimeField(label='Start Time', required=True, input_formats=[TIME_FORMAT])
        end_time = forms.TimeField(label='End Time', required=True, input_formats=[TIME_FORMAT])
        ...
        Field('end_date', placeholder='dd/mm/yyyy'),
        Field('start_time', placeholder='hh:mm (pm/am)', template="appointments/datetimefield.html"),
        Field('end_time', placeholder='hh:mm (pm/am)', template="appointments/datetimefield.html"),

和干净的保存方法here

最后,自定义模板:

{%load crispy_forms_field%}

<div id="div_{{ field.auto_id }}" class="form-group{% if field.errors %} has-error{% endif %}">

{% if field.label and form_show_labels %}
<label for="{{ field.id_for_label }}" class="control-label {{ label_class }}{% if field.field.required %} requiredField{% endif %}">
    {{ field.label|safe }}{% if field.field.required %}<span class="asteriskField">*</span>{% endif %}
</label>
{% endif %}

<div class="controls col-xs-8 col-md-9 col-lg-9">   
    {% crispy_field field %}
</div>
</div>

2 个答案:

答案 0 :(得分:1)

您需要在模板中显示错误。 Crispy表单有一个模板,您可以包含错误:{% include 'bootstrap3/layout/help_text_and_errors.html' %}(如果您使用的是bootstrap 3)。

所以你的自定义模板可能是这样的:

<div id="div_{{ field.auto_id }}" class="form-group{% if field.errors %} has-error{% endif %}">

{% if field.label and form_show_labels %}
<label for="{{ field.id_for_label }}" class="control-label {{ label_class }}{% if field.field.required %} requiredField{% endif %}">
    {{ field.label|safe }}{% if field.field.required %}<span class="asteriskField">*</span>{% endif %}
</label>
{% endif %}

<div class="controls col-xs-8 col-md-9 col-lg-9">   
    {% crispy_field field %}
    {% include 'bootstrap3/layout/help_text_and_errors.html' %}
</div>
</div>

答案 1 :(得分:0)

也许您应该检查crispy_forms的版本并更新它。

我也遇到过crispy_forms == 1.3.2这个问题。但是当我将crispy_forms更新到1.4.0时,问题就消失了。

实际上,我发现只有bootstrapuni_form文件夹位于crispy_forms/templatesbootstrap3文件夹中,而当安装了crispy_forms == 1.3.2时。