Я создал счет и элементы в нем, используя Modelform и inlineforset_factory. Теперь я пытаюсь создать форму редактирования, но я получаю MultiValueDictKeyError, когда я пытаюсь редактировать эти встроенные поля. Если я просто создаю новые inlineformsets, я могу редактировать Modelform просто отлично. После одного часа поиска в Google я не собираюсь найти решение.Редактирование inlineformsets, связанных с родительской формой
maxItems = 20
ItemFormSet = inlineformset_factory(Invoice, Item, can_delete=True, extra=maxItems)
Создание нового счета-фактуры (работает отлично)
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 с «u'item_set-0-id». Я подозреваю, что по какой-то причине они не редактируются, а заменяются. Я пытаюсь по-другому ... удалить все элементы в выбранном счете и добавить их заново ... Я новичок в stackoverflow, я дам, я должен сообщить вам, добавив комментарий, надеясь, что он будет правильным. Спасибо – MarKay
Спасибо, что дайте мне знать. Извините, это не сработало для вас: - / – dustinfarris