Python 更新内联表单集时出现多值错误
我在更新内联表单集时遇到Django问题。我想更新表单和内联表单集,但会引发以下错误: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
"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是的,我在此处添加它,我以前忘记添加它,抱歉。