Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 内联表单验证返回空formset.errors列表_Django_Django Templates_Inline Formset - Fatal编程技术网

Django 内联表单验证返回空formset.errors列表

Django 内联表单验证返回空formset.errors列表,django,django-templates,inline-formset,Django,Django Templates,Inline Formset,我有以下内联表单集: CreateClientFormset = inlineformset_factory( Client, EventType, fields=( 'name', ), extra=0, can_delete=True, min_num=1, validate_min=True, widgets={ 'name': forms.TextInput(attrs={

我有以下内联表单集:

CreateClientFormset = inlineformset_factory(
    Client,
    EventType,
    fields=(
        'name',
    ),
    extra=0,
    can_delete=True,
    min_num=1,
    validate_min=True,
    widgets={
        'name': forms.TextInput(attrs={
            'class':'form-control',
            'maxlength' : 50
        })
    })
以及以下观点:

def create_client(request):
    form = CreateClient()
    formset = CreateClientFormset(instance=Client())

    if request.method == 'POST':
        form = CreateClient(request.POST)

        if form.is_valid():
            client_saved = form.save(commit=False)
            client_formset = CreateClientFormset(request.POST, request.FILES, instance=client_saved)

            if client_formset.is_valid():
                client_saved.save()
                client_formset.save()

                return redirect(clients)
            else:
                print client_formset.errors
    else:
        print form.errors

    return render(request, 'create_client.html', {'form' : form, 'formset' : formset})
当我尝试向表单集提交一个空值时,它会将错误打印到控制台,但它不会在模板中执行任何操作

这是我的模板:

{% for field in formset %}
{{ formset.management_form }}
    <tr>
        <td><label>{{ field.name.label }}</label></td>
            <td>
              {% if field.instance.pk %}{{ field.DELETE }}{% endif %}
              {{ field.name }}
              {{ formset.errors }}
              {{ field.id }}
              {% for hidden in formset.hidden_fields %}
                {{ hidden }}
              {% endfor %}
            </td>
    </tr>
{% endfor %}
{% for field in formset %}
    <tr>
        <td><label>{{ field.name.label }}</label></td>
        <td>
            {% if field.instance.pk %}{{ field.DELETE }}{% endif %}
            {{ field.name }}
            {% if formset_errors %}
                {% for errors in formset_errors %}
                    {% for error in errors.values %}
                        {{ error }}
                    {% endfor %}
                {% endfor %}
            {% endif %}
            {{ field.id }}
            {% for hidden in formset.hidden_fields %}
                {{ hidden }}
            {% endfor %}
        </td>
    </tr>
{% endfor %}
{%for formset%中的字段]
{{formset.management_form}
{{field.name.label}
{%if-field.instance.pk%}{{field.DELETE}{%endif%}
{{field.name}
{{formset.errors}}
{{field.id}
{%用于隐藏在formset.hidden_字段%}
{{隐藏}}
{%endfor%}
{%endfor%}
{{formset.errors}
显示
[]
,甚至在表单提交之前


我做错了什么?谢谢。

您呈现
表单集

return render(request, 'create_client.html', {'form' : form, 'formset' : formset})
print client_formset.errors
但是,加载表单数据/错误的是
客户端\u表单集

return render(request, 'create_client.html', {'form' : form, 'formset' : formset})
print client_formset.errors
由于在模板中使用了
{{{formset.errors}}
,因此需要传递第二个来渲染

if client_formset.is_valid():
    client_saved.save()
    client_formset.save()

    return redirect(clients)
else:
    print client_formset.errors
    return render(request, 'create_client.html', {'form' : form, 'formset' : formset, 'formset_errors' : client_formset.errors})
在模板中:

{% for field in formset %}
{{ formset.management_form }}
    <tr>
        <td><label>{{ field.name.label }}</label></td>
            <td>
              {% if field.instance.pk %}{{ field.DELETE }}{% endif %}
              {{ field.name }}
              {{ formset.errors }}
              {{ field.id }}
              {% for hidden in formset.hidden_fields %}
                {{ hidden }}
              {% endfor %}
            </td>
    </tr>
{% endfor %}
{% for field in formset %}
    <tr>
        <td><label>{{ field.name.label }}</label></td>
        <td>
            {% if field.instance.pk %}{{ field.DELETE }}{% endif %}
            {{ field.name }}
            {% if formset_errors %}
                {% for errors in formset_errors %}
                    {% for error in errors.values %}
                        {{ error }}
                    {% endfor %}
                {% endfor %}
            {% endif %}
            {{ field.id }}
            {% for hidden in formset.hidden_fields %}
                {{ hidden }}
            {% endfor %}
        </td>
    </tr>
{% endfor %}
{%for formset%中的字段]
{{field.name.label}
{%if-field.instance.pk%}{{field.DELETE}{%endif%}
{{field.name}
{%if formset_errors%}
{%formset_errors%}
{%表示错误中的错误。值%}
{{error}}
{%endfor%}
{%endfor%}
{%endif%}
{{field.id}
{%用于隐藏在formset.hidden_字段%}
{{隐藏}}
{%endfor%}
{%endfor%}

显示模板的视图部分在哪里?请参见“视图”部分底部的编辑@DanielRoseman。