저는 Modelform 및 inlineforset_factory를 사용하여 송장 및 항목을 생성했습니다. 편집 폼을 만들려고하는데 인라인 필드를 편집하려고 할 때 MultiValueDictKeyError가 발생합니다. 새로운 인라인 형식을 만들면 Modelform을 편집 할 수 있습니다. 1 시간 씩 인터넷 검색을 한 후에는 어떤 해결책도 찾을 수 없습니다.상위 양식과 연관된 인라인 형식 집합 편집
maxItems = 20
ItemFormSet = inlineformset_factory(Invoice, Item, can_delete=True, extra=maxItems)
새 송장 만들기 당신은 내가 다른 인스턴스 가정 두 변수, invoicer
및 invoice
이
def new_invoice(request):
if request.method == "POST":
form = InvoiceForm(request.POST)
if form.is_valid():
invoice = form.save(commit=False)
item_formset = ItemFormSet(request.POST,instance=invoice)
if item_formset.is_valid():
invoice.dateCreated = datetime.datetime.now()
invoice.save()
item_formset.save()
return redirect('list/new0')
else:
form = InvoiceForm()
item_formset = ItemFormSet(instance=Invoice())
return render(request, "form.html", {"form": form, "item_formset": item_formset })
편집 송장 (MultiValueDictKeyError)
def edit_invoice(request, invoice_id):
invoicer = get_object_or_404(Invoice, pk=invoice_id)
if request.method == "POST":
form = InvoiceForm(request.POST, instance=invoicer)
if form.is_valid():
invoice = form.save(commit=False)
item_formset = ItemFormSet(request.POST,instance=invoice)
if item_formset.is_valid():
invoice.dateCreated = datetime.datetime.now()
invoice.save()
item_formset.save()
return redirect('list/new0')
else:
form = InvoiceForm(instance=invoicer)
item_formset = ItemFormSet(instance=invoicer)
return render(request, "form.html", {"form": form, "item_formset": item_formset })
슬프게도, 그것을 제출하려고 할 때 슬프게도 나에게 무슨 일이 일어나는가. MultiValueDictKeyError with "u'item_set-0-id '".. 나는 어떤 이유로 그것들이 편집되지 않고 대체되었다고 생각합니다. 나는 다른 방법을 시도하고 ... 선택한 송장에있는 모든 항목을 삭제하고 그들을 새로 추가 ... 나는 stackoverflow에 새로운 오전, 나는 당신이 코멘트를 추가하여 알릴해야 그 올바른 방법을 바랍니다. 감사합니다 – MarKay
알려 주셔서 감사합니다. 죄송합니다 그것은 당신을 위해 작동하지 않았다 : - / – dustinfarris