Почему я не могу получить доступ к атрибутам ошибок форм в шаблоне django? - PullRequest
0 голосов
/ 17 июня 2019

Код ниже показывает мой шаблон, представления и код формы. Я хотел бы отобразить ошибки, сгенерированные функциями .is_valid (), вызываемыми в views.py при повторной визуализации html формы. Проблема в том, что я не могу даже получить доступ к ошибкам в инцидентах и ​​инцидентах, не говоря уже о их отображении. Ни инцидент_форма.errors, инцидент_formset.errors, ни

{% for field in incident_form %}
  {% for error in field.errors %}
    <p> {{ error }} </p>
  {% endfor %}
{% endfor %}

позвольте мне просмотреть ошибки, сгенерированные методом .is_valid. Как ни странно, хрустящее приложение возвращается к неверной форме с выделенным первым недопустимым полем и готовым принять ввод от пользователя. Кроме того, если поле даты заполнено неправильно, в форме иногда будет отображаться сообщение об ошибке типа «Поле недопустимой даты». Тем не менее, никакие обязательные поля, которые отправляются без данных, показывают «Обязательные» ошибки. Помощь очень ценится.

Фрагмент new_incident.html:

<form method="post" class="form-horizontal">

    {% crispy incident_form %}
    <input type="button" id="delete_field_data" class="btn btn-outline-danger" value="Delete Field Incident Data">

    <div id="form_set_class">
        {{ incident_formset.management_form }}
        {% for form in incident_formset %}
            {{form.non_field_errors}}
            {{form.errors}}
            {% crispy form %}
        {% endfor %}
    </div>
    [...]

Фрагмент forms.py:

class IncidentForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super(IncidentForm, self).__init__(*args, **kwargs)

        self.helper = FormHelper()
        self.helper.form_tag = False
        self.helper.layout = Layout( [<edited_out_for_this_post] )
        self.helper.form_id = "incident_form"

class PartDeficiencyForm(forms.ModelForm):
    class Meta:
        model = PartDeficiency
        fields = "__all__"

DeficiencyFormSet = modelformset_factory(model=PartDeficiency, form=PartDeficiencyForm, exclude=None, extra=0, max_num=20, can_delete=True)

Фрагмент views.py:

def new_incident(request):

    if request.method == 'POST':
        incident_form = IncidentForm(request.POST)
        deficiency_formset = DeficiencyFormSet(request.POST)

        if incident_form.is_valid() and deficiency_formset.is_valid():
            incident_form.save()
            deficiency_formset.save()
            return redirect('quality_dept:home')

        else:
            dict = {'incident_form': incident_form, 'incident_formset': deficiency_formset}
            return render(request, 'incidents/new_incident.html', dict)

    else:
        incident_form = IncidentForm()
        formset_data = { 'form-TOTAL_FORMS': '0',
                     'form-INITIAL_FORMS': '0',
                     'form-MAX_NUM_FORMS': '20'}
        def_formset = DeficiencyFormSet(formset_data)
        dict = {'incident_form': incident_form, 'incident_formset': def_formset}
        return render(request, 'incidents/new_incident.html', dict)
...