一个页面多个ModelForm

发布时间 2023-07-10 10:03:07作者: 花生与酒

 

class testView(View):

    def get(self, request, *args, **kwargs):

        #複数のフォームをコンテキストとして渡す
        context = {
            'main_form' : Test1ModelForm(),
            'detail_form' : Test2ModelForm(),
        }
    
        return TemplateResponse(request, 'test.html', context)

    def post(self, request, *args, **kwargs):
        form1 = Test1ModelForm(request.POST)
        form2 = Test2ModelForm(request.POST)

        #全てのフォームのvalidationが通ったらsave
        if form1.is_valid() and form2.is_valid():
            form1.save()
            form2.save()
        
        return HttpResponseRedirect(reverse('test'))

 

template.html

<form method="post">
    {% csrf_token %}
        <table>
            {{ main_form.as_table }}
        </table>
        <br>

        <table>
            {{ detail_form.as_table }}
        </table>

    <input type="submit" value="登録">
</form>