У меня есть 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 с помощью одной кнопки отправки?