У меня есть формы, которые можно динамически добавлять и удалять из набора форм. На внешнем интерфейсе я отмечаю удаление, установив флажок «удалить», включенный в форму. form-0-DELETE добавляется в POST автоматически.
https://docs.djangoproject.com/en/2.2/topics/forms/formsets/#dealing-with-ordering-and-deletion-of-forms
Удаление формы из набора форм django
def edit(request):
Formset = formset_factory(EditForm, extra=1, can_delete=True)
if request.method == 'POST':
formset = Formset(request.POST)
if formset.is_valid():
cleaned_data = formset.cleaned_data
print(cleaned_data)
return render(request, '/edit.html', {'test': 'Post'})
else:
formset = Formset()
return render(request, '/edit.html', {'formset': formset})
Вот часть возвращаемого набора форм:
data:
{u'form-MAX_NUM_FORMS': [u'1000'], u'form-0-test': [u'72'], u'form-0-DELETE': [u'on'], u'form-TOTAL_FORMS': [u'0'], u'form-INITIAL_FORMS': [u'0'], u'form-0-weight': [u'1']}
Удалено_форм:
[]
'test' и 'weight' являются входными значениями в формах. Вы можете увидеть «form-0-DELETE» там. Это означает, что событие удаления было добавлено в POST со значением по умолчанию «on». В одной из моих ссылок говорилось, что нужно изменить это значение на что-то, что можно оценить как true, установив для него значение True, true, и 1 ничего не изменило.
TOTAL-FORMS правильно равен 0, так как я отслеживаю добавления и удаления, но я ожидал, что удаленные_формы будут заполнены формой-0. Это проблема, когда у меня более 0 форм, поскольку я не знаю, что будет в очищенных данных, поскольку удаленные формы не записываются.