Python 如何在django中单击一个按钮以选项卡形式提交3份表格?

Python 如何在django中单击一个按钮以选项卡形式提交3份表格?,python,django,database,forms,view,Python,Django,Database,Forms,View,我有3个表格,第一个收集用户的个人信息,第二个收集用户的教育信息,第三个有一个提交按钮和复选框 我的表格.py class PersonalInfoForm(ModelForm): CHOICES = [('female','female'),('male','male')] enrolment = forms.IntegerField(widget=forms.HiddenInput) date_of_birth = forms.DateField(widget=

我有3个表格,第一个收集用户的个人信息,第二个收集用户的教育信息,第三个有一个提交按钮和复选框

我的表格.py

class PersonalInfoForm(ModelForm):

    CHOICES = [('female','female'),('male','male')]

    enrolment = forms.IntegerField(widget=forms.HiddenInput)

    date_of_birth = forms.DateField(widget=DateInput)
    gender = forms.ChoiceField(choices=CHOICES,widget=forms.RadioSelect)
    class Meta:
        model = Personal_Info
        fields = [
            'enrolment',
            'first_name',
            'middle_name',
            'last_name',
            'date_of_birth',
            'gender',
            'address'
        ]

class EducationalInfoForm(ModelForm):
    username = forms.IntegerField(widget=forms.HiddenInput())
    class Meta:
        model = Educational_Info
        fields = [
            'ssc_marks',
            'ssc_percentage',
            'ssc_board',
            'hsc_marks',
            'hsc_percentage',
            'hsc_board',
            'college_name',
            'university',
            'semester'
        ]

class AgreeInfoForm(ModelForm):
    agree = forms.BooleanField()
    username = forms.IntegerField(widget=forms.HiddenInput())
    class Meta:
        model = Agree_Info
        fields = [
            'agree'
        ]
名为“合格奖学金.html”的模板

<div class="row">
                            <div class="col-lg-12">
                                <div class="card">

                                    <!-- open the below card body for the from -->
                                    <div class="card-body">
                                        <h4 class="header-title mb-3"></h4>

                                        <ul class="nav nav-tabs nav-bordered nav-justified" role="tablist">
                                            <li class="nav-item">
                                                <a class="nav-link active" id="personal-tab-b2" data-toggle="tab" href="#personal-b2" role="tab" aria-controls="personal-b2" aria-selected="true">
                                                    <span class="d-block d-sm-none"><i class="fa fa-personal"></i></span>
                                                    <span class="d-none d-sm-block">Personal</span>
                                                </a>
                                            </li>
                                            <li class="nav-item">
                                                <a class="nav-link" id="educational-tab-b2" data-toggle="tab" href="#educational-b2" role="tab" aria-controls="educational-b2" aria-selected="false">
                                                    <span class="d-block d-sm-none"><i class="fa fa-educational"></i></span>
                                                    <span class="d-none d-sm-block">Educational</span>
                                                </a>
                                            </li>
                                            <li class="nav-item">
                                                <a class="nav-link" id="complete-tab-b2" data-toggle="tab" href="#complete-b2" role="tab" aria-controls="complete-b2" aria-selected="false">
                                                    <span class="d-block d-sm-none"><i class="fa fa-complete"></i></span>
                                                    <span class="d-none d-sm-block">Complete</span>
                                                </a>
                                            </li>

                                        </ul>
                                        <div class="tab-content">
                                            <div class="tab-pane show active" id="personal-b2" role="tabpanel" aria-labelledby="personal-tab-b2">
                                                <div>
                                                    {{personal_form|crispy}}
                                                    <div>
                                                        <a href = "javascript:void(0)" onclick = "$('#educational-tab-b2').click()"><button type = "submit" class = "btn btn-primary">Next</button></a>
                                                    </div>
                                                </div>
                                            </div>
                                            <div class="tab-pane" id="educational-b2" role="tabpanel" aria-labelledby="educational-tab-b2">

                                                <div>    
                                                    {{educational_form|crispy}}
                                                    <div>
                                                        <a href = "javascript:void(0)" onclick = "$('#complete-tab-b2').click()"><button type = "submit" class = "btn btn-primary">Next</button></a>
                                                    </div>
                                                </div>


                                            </div>
                                            <div class="tab-pane" id="complete-b2" role="tabpanel" aria-labelledby="complete-tab-b2">
                                                <div>
                                                    {{agree_form|crispy}}
                                                    <div>
                                                        <form name = "ajax-form" method="POST">
                                                            {% csrf_token %}
                                                            <div  class="form-group">
                                                                <input type = "submit" name = "submit" value = "Submit" class = "btn btn-primary"/>
                                                            </div>

                                                        </form>
                                                    </div>
                                                </div>

                                            </div>

                                        </div>
                                    </div>
                                </div>
                            </div> <!-- end col -->


                        </div>

我想通过点击第三个选项卡上的一个提交按钮提交所有选项卡中的数据。现在,当我运行给定的代码时,我不会得到first\u name、middle\u name或其他表单字段。有没有办法通过一个提交按钮将所有表单数据发送到views.py?

因为其他选项卡窗格没有表单输入,因此您无法获取表单输入。将表单放在第一个表单开始的选项卡之前,并在最后一个表单完成后结束。多谢各位
def es(request):
    id = request.user.id
    print(request.user.username)
    username = request.user.username

    if not request.method == 'POST':
        print('post request',id)



        personal_form = PersonalInfoForm()
        educational_form = EducationalInfoForm()
        agree_form = AgreeInfoForm()
        args = {'personal_form':personal_form,'educational_form':educational_form,'agree_form':agree_form}
        return render(request,'eligible-scholarships.html',args)


    elif request.method == 'POST':
        id = request.user.id

        print('inside post')
        enrolment = username
        first_name = request.POST['first_name']
        middle_name = request.POST['middle_name']
        last_name = request.POST['last_name']
        date_of_birth = request.POST['date_of_birth']
        gender = request.POST['gender']
        address = request.POST['address']

        personal = Personal_Info(enrolment=enrolment,first_name=first_name,middle_name=middle_name,last_name=last_name,
                                 date_of_birth=date_of_birth,gender=gender,address=address,user_id = id)
        personal.save()


        ssc_marks = request.POST['ssc_marks']
        ssc_percentage = request.POST['ssc_percentage']
        ssc_board = request.POST['ssc_board']
        hsc_marks = request.POST['hsc_marks']
        hsc_percentage = request.POST['hsc_percentage']
        hsc_board = request.POST['hsc_board']
        college_name = request.POST['college_name']
        university = request.POST['university']
        semester = request.POST['semester']

        educational = Educational_Info(user_id = id,ssc_marks=ssc_marks,ssc_percentage=ssc_percentage,ssc_board=ssc_board,
                                            hsc_marks = hsc_marks,hsc_percentage=hsc_percentage,hsc_board=hsc_board,
                                            college_name=college_name,university=university,semester=semester)

        educational.save()
        agreeval = request.POST['agree']
        agree = Agree_Info(user_id = id,agree = agreeval)
        agree.save()
        print('all details saved successfully')
        return redirect('/es')

    return render(request,'eligible-scholarships.html',args)