Как я могу отправить 3 формы во вкладках нажатием одной кнопки в django? - PullRequest
0 голосов
/ 17 марта 2020

У меня есть 3 формы, первая собирает личную информацию пользователя, вторая собирает образовательную информацию пользователя, а третья имеет кнопку отправки вместе с флажком.

My forms.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>

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)

Я хочу отправлять данные со всех вкладок по нажатию одной кнопки отправки, которая на третьей вкладке. Теперь, когда я запускаю данный код, я не получаю first_name, middle_name или других полей формы. Есть ли способ отправить все данные формы в views.py с помощью одной кнопки отправки?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...