Я пытаюсь добиться динамического набора форм без поддержки JavaScript.
Для этого я добавил кнопку внизу формы,
<input type="submit" name="add_item" value="+" id="submit-id-add_item">
Теперь внутри моего CreateView я пробовал следующий код.
def get_context_data(self, **kwargs):
context = super(AddInvoice, self).get_context_data(**kwargs)
ItemInlineFormSet = inlineformset_factory(Invoice, InvoiceItem, form=InvoiceItemForm, extra=1, can_delete=False, formset=InvoiceItemFormSet)
if self.request.method=='POST':
if 'add_item' in self.request.POST:
cp = self.request.POST.copy()
cp['item-TOTAL_FORMS'] = int(cp['item-TOTAL_FORMS'])+ 1
context['item_formset'] = ItemInlineFormSet(cp,prefix='item')
else:
context['item_formset'] = ItemInlineFormSet(self.request.POST,prefix='item')
else:
context['item_formset'] = ItemInlineFormSet (prefix='item')
return context
Но, когда я нажимаю на кнопку add_item, я получаю следующую ошибку
MultiValueDictKeyError at ... 'item-1-item'
(мой form prefix
равен item
, а также имеет поле с именем item)
Я подозреваю, что это потому, что django ищет следующий набор элементов формы для сопоставления с TOTAL_FORMS , но он не может найти нигде.
Что мне здесь не хватает?
Спасибо.