Как управлять валидацией форм 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. Ваш случай кажется очень хорошим кандидатом для примера в этой статье.

Вернуться на верх