Как управлять валидацией форм Django с помощью динамически создаваемых форм
Допустим, у меня есть следующая html-страница:
Допустим, в каждой строке есть форма (мне нужно ее реализовать), Как я могу сделать так, чтобы при нажатии на кнопку "сохранить" (тоже нужно реализовать) все входы каждой строки отправлялись в request.POST и я мог обрабатывать их по отдельности в бэкенде.
Вот мой взгляд на новые расходы:
def new_expense(request):
data = {
'title': "New Expense",
}
data['projects'] = Project.objects.filter(is_visible=True).values('id')
data['expense_category'] = dict((y, x) for x, y in EXPENSE_CATEGORY)
data['expense_type'] = dict((y, x) for x, y in EXPENSE_TYPE)
form = ExpenseForm()
if request.method == "POST":
reset = request.POST['reset']
form = ExpenseForm(request.POST)
if form.is_valid():
form.save()
if reset == 'true':
form = ExpenseForm()
data['form'] = form
return render(request, "expense/new_expense.html", data)
Я хотел бы создать аналогичное представление для нескольких new expense
созданий.
Одним из подходов к решению этой проблемы может быть обработка каждого ряда по отдельности. Для этой задачи можно использовать очень простой и эффективный инструмент под названием django_htmx. Вот хорошая статья о том, как обрабатывать наборы форм (типа) строк: Build dynamic forms with Htmx. Ваш случай кажется очень хорошим кандидатом для примера в этой статье.