jazzband / django-formtools

A set of high-level abstractions for Django forms
https://django-formtools.readthedocs.io
BSD 3-Clause "New" or "Revised" License
794 stars 135 forks source link

How do I display per field errors? #213

Closed gitouttaherenow closed 2 years ago

gitouttaherenow commented 2 years ago

I'm using the following code in my template. How do I go about displaying errors per field? The tag {{ field.errors }} inside the loop isn't working. It outputs nothing in the div. However, {{ form.errors }} works fine, but I won't be able to display them per field basis.

<form method="post">
    {% csrf_token %}
    {{ wizard.management_form }}
    {{ wizard.form.errors }}
    {{ wizard.form.non_field_errors }}
    {% for field in wizard.form %}
        <div class="form-group">
            <label for="{{field.id_for_label}}" class="form-label">{{field.label}}</label>
            {{field}}
            <div class="form-text text-muted">
                <small>{{field.help_text}}</small>
            </div>
            <div class="invalid-feedback">
                {{field.errors}}
            </div>
            {% endif %}
        </div>
    {% endfor %}
</form>

Here's the view code. Some parts have been retracted for brevity.

class MyFormWizard(SessionWizardView):
    template_name = 'path/template.html'

    def done(self, form_list, **kwargs):
        process_x_form_data(form_list)
        return redirect('someurl')

def process_x_form_data(form_list):
    form_data = [form.cleaned_data for form in form_list]
    .
    .
    .
    obj = Obj.objects.create(data=data)
    obj.save()
gitouttaherenow commented 2 years ago

Sorry, this turned out to be a Bootstrap + field error class issue. Used https://stackoverflow.com/a/70826318 to solve it.

Since this is unrelated to formtools, feel free to delete the issue.