Python 更新内联表单集时出现多值错误

Python 更新内联表单集时出现多值错误,python,django,inline-formset,Python,Django,Inline Formset,我在更新内联表单集时遇到Django问题。我想更新表单和内联表单集,但会引发以下错误: "MultiValueDictKeyError" Exception Value: "u'clientphone_set-0-id'" 我的看法是: def edit_client(request, client_id): client_to_edit = Client.objects.get(id=client_id) form = ClientForm(instance=client

我在更新内联表单集时遇到Django问题。我想更新表单和内联表单集,但会引发以下错误:

"MultiValueDictKeyError"

Exception Value: "u'clientphone_set-0-id'"
我的看法是:

def edit_client(request, client_id):

    client_to_edit = Client.objects.get(id=client_id)
    form = ClientForm(instance=client_to_edit)
    phone_formset = ClientPhoneFormSet(instance=client_to_edit)

    if request.method == 'POST':
        form = ClientForm(request.POST, instance=client_to_edit)

        if form.is_valid():
            form_saved = form.save(commit=False)
            phone_formset = ClientPhoneFormSet(request.POST, request.FILES, instance=form_saved)

            if phone_formset.is_valid():
                form_saved.save()
                phone_formset.save()        
                return client(request)

    return render(request, 'WorkOrders/add_client.html', {'form' : form, 'phone_formset' : phone_formset})
这些是我的表格

class ClientForm(forms.ModelForm):
    name = forms.CharField(max_length=128)
    rif = forms.CharField(max_length=10)
    address = forms.CharField(max_length=250)

    class Meta:
        model = Client
        fields = ('name','rif','address',)

ClientPhoneFormSet = inlineformset_factory(Client, ClientPhone, extra=1, fields=('phone_number',), can_delete=True)
这是我的模板

<form class="form-horizontal" id="add_client" method="post" action=".">
    {% csrf_token %}
    {% for field in form.visible_fields %}
        <div class="form-group">
           <label for="{{ field.id }}" class="col-sm-2 control-label">{{ field.help_text }}</label>
           <div class="col-sm-10">
             {{ field.errors }}
             {{ field }}
           </div>
        </div>
    {% endfor %}
    <div class="form-group">
        <label for="{{ field.id }}" class="col-sm-2 control-label">Teléfono</label>
        <div class="col-sm-10">
            <table border="0" cellpadding="0" cellspacing="0" width="100%">
                <tbody>
                    {% for form in phone_formset.forms %}
                        <tr>
                            <td>
                                {% if form.instance.pk %}
                                    {{ form.DELETE }}
                                {% endif %}
                                {{ form.errors }}
                                {{ form.phone_number }}
                            </td>
                        </tr>
                    {% endfor %}
                </tbody>
            </table>
        </div>
    </div>
{{ phone_formset.management_form }}
    <div class="form-group">
        <div class="col-sm-offset-2 col-sm-10">
            <button type="submit" class="btn btn-primary">Guardar</button>
            <a href="{% url 'index' %}" class="btn btn-primary">Volver</a>
        </div>
    </div>
</div>
</form> 

{%csrf_令牌%}
{%form.visible_fields%}
{{field.help_text}
{{field.errors}}
{{field}}
{%endfor%}
特莱福诺酒店
{phone_formset.forms%}
{%if form.instance.pk%}
{{form.DELETE}
{%endif%}
{{form.errors}}
{{form.phone_number}
{%endfor%}
{{phone_formset.management_form}
瓜达尔
它可以毫无问题地打开表单,错误发生在我提交时


谢谢。

我用
phone\u formset
代替了
phone\u formset.forms
,并添加了
{{phone\u field.id}

结果如下:

<table border="0" cellpadding="0" cellspacing="0" width="100%">
    <tbody>
        {% for phone_field in phone_formset %}
        <tr>
           <td>
              {% if phone_field.instance.pk %}
                {{ phone_field.DELETE }}
              {% endif %}
              {{ phone_field.errors }}
              {{ phone_field.id }}
              {{ phone_field.phone_number }}
           </td>
        </tr>
        {% endfor %}
    </tbody>
</table>

{phone_formset%中phone_字段的%s}
{%if phone_field.instance.pk%}
{{phone_field.DELETE}
{%endif%}
{{phone_field.errors}
{{phone_field.id}
{{phone_field.phone_number}
{%endfor%}

您的表单中是否有两个相同的字段?我想您应该在此处显示您的表单。py您如何在模板中呈现表单集?@nnaelle是的,它们出现了两次,因为当我进入“更新”视图时,它会自动添加一个新字段。@Ladmerc是的,我在此处添加它,我以前忘记添加它,抱歉。