Как обрабатывать несколько форм Django в request.POST

Допустим, у меня есть форма, которая содержит следующие значения после отправки формы:

print(request.POST):

<QueryDict: {'csrfmiddlewaretoken': ['3oveeCkYroBwKNSLw8wOr8dtURYGcO9AtOKYfPoNbf8q3L5Az7aEAnJaQldYmnaG'], 'user': ['1'], 'reset': ['false'], 'project': ['100001'], 'contents': ['test'], 'amount': ['3'], 'currency': ['JPY'], 'expense_date': ['09/22/2021'], 'store_company_client_name': ['test'], 'expense_category': ['Staffing payments'], 'note': ['fdv']}>

Что если у меня несколько входов, и я получаю request.POST вот так:

<QueryDict: {'csrfmiddlewaretoken': ['xbdRWXh4LdKTTJoCMJa7O53lApbY03byXBsBXalTv4hNcHBrPIOXXkz2wTqgaCcE'], 'user': ['1','1','1'], 'expense_date': ['09/22/2021', '09/21/2021', '09/20/2021'], 'project': ['100001', '100002', '100002'], 'expense_category': ['Staffing payments', 'Staffing payments', 'Staffing payments'], 'expense_type': ['Salaries', 'Salaries', 'Salaries'], 'contents': ['test', 'test', 'test'], 'currency': ['1', '1', '1'], 'amount': ['12', '1', '4'], 'store_company_client_name': ['customer1', 'customer2', 'customer3'], 'note': ['lorem ipsum', 'lorem ipsum', 'lorem ipsum']}>

Как я могу обработать его в back-end?

Сейчас для простой формы у меня есть такой вид:

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":
        print(request.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, но только для больших объемов данных/вкладов, скажем, multiple_new_expense для обработки request.POST.

каков был бы наиболее питонический способ решения этой проблемы...?

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