djangoformstemplateserror-list

some of the error list members in django form doesn't show up in the template


I have a form in django and I wanna show errors before each field.

The problem is when I use form.field_name.errors or form.errors.field_name, it happens for one of the fields that error does not show up, just for one of them, here's the template code:

<table class="">
                <form action="" method="POST" enctype="multipart/form-data">

                    {% csrf_token %}

                    <div>
                        <div>{{ form.errors.competitor_name }}</div>
                        <br/>
                        <div>name:</div>
                        <div>{{ form.competitor_name }}</div>
                    </div>
                    <div>
                        <div>{{ form.errors.notional_code }}</div>
                        <br/>
                        <div>code:</div>
                        <div>{{ form.national_code }}</div>
                    </div>
                    <div>
                        <table id="filesContainer">
                            <tbody>
                            {% for form_ in formset.forms %}
                                <tr id="{{ form_.prefix }}-row">
                                    <td>{{ form_.file.label }}:</td>
                                    <td>{{ form_.file }}</td>
                                    <td></td>
                                </tr>
                            {% endfor %}
                            </tbody>
                        </table>
                        <p>
                            {{ formset.management_form }}
                        </p>
                    </div>
                    <div class="arsh-signup-row">
                        <input type="submit" value="SignUp" />
                    </div>
                </form>
            </table>

I have problem in showing errors of national_code field.

I have used break points and I absolutely realized that I'm adding errors in the right way and everything about form is alright, it seems something is wrong with the template and I don't know what's this.

The interesting part is, when I wanna show up this field's error in some other part of the page, it's ok, everything is done, but it doesn't show in that specific part, if I use this code:

<div>
                        <div>{{ form.errors.notional_code }}</div>
                        <br/>
                        <div>name:</div>
                        <div>{{ form.competitor_name }}</div>
                    </div>
                    <div>
                        <div>{{ form.errors.notional_code }}</div>
                        <br/>
                        <div>code:</div>
                        <div>{{ form.national_code }}</div>
                    </div>

I can see what I want. It's really funny at first, but now it's confusing for me.

Any advice would be appreciated.


Solution

  • the problem would be solved with this code lines:

    {% for field in form %} 
        <div class="row"> 
            <div class="error">{{ field.errors }}</div> 
            <br/> 
            <div class="lable">{{ field.label }}</div> 
            <div class="field">{{ field }}</div> 
        </div> 
    {% endfor %}
    

    ;-)