我正在开展一个申请人可以申请多个申请的项目。的 Models.py:
class StudentCandidateApplication(models.Model):
login_email = models.ForeignKey(User,related_name='%(class)s_requests_created_5')
first_name = models.CharField( max_length=20,)
middle_name = models.CharField(max_length=20, blank=True, null=True)
last_name = models.CharField(max_length=20,blank=True, null=True)
gender = models.CharField(max_length=10,blank=True, null=True)
# date_of_birth = models.DateField(blank=True, null=True)
address_line_1 = models.CharField( max_length=60,blank=True, null=True)
address_line_2 = models.CharField( max_length=40, blank=True, null=True)
address_line_3 = models.CharField( max_length=40, blank=True, null=True)
city = models.CharField(max_length=20,blank=True, null=True)
state = models.CharField(max_length=20,blank=True, null=True)
country = models.CharField(max_length=20,blank=True, null=True)
application_status = models.CharField(max_length=20,blank=True, null=True)
current_organization = models.CharField(max_length=50, blank=True, null=True)
program = models.ForeignKey(Program,related_name='%(class)s_requests_created_6',blank=True, null=True)
current_location = models.ForeignKey(Location, related_name='%(class)s_requests_created_7',related_query_name='%(class)s_requests_created_7s',blank=True, null=True)
fathers_name = models.CharField( max_length=100,blank=True, null=True)
mothers_name = models.CharField( max_length=100,blank=True, null=True)
nationality = models.CharField( max_length=15,blank=True, null=True)
phone = models.IntegerField( blank=True, null=True)
mobile = models.IntegerField(blank=True, null=True)
email_id = models.CharField(max_length=50,blank=True, null=True)
current_employment_status = models.CharField( max_length=20,blank=True, null=True)
employer_consent_flag = models.IntegerField(blank=True, null=True)
employer_mentor_flag = models.IntegerField(blank=True, null=True)
current_org_employee_number = models.CharField( max_length=15, blank=True, null=True)
current_designation = models.CharField( max_length=30,blank=True, null=True)
fee_payment_owner = models.CharField( max_length=20, blank=True, null=True)
current_org_industry = models.ForeignKey(Industry, related_name='%(class)s_requests_created_8',blank=True, null=True)
# current_org_employment_date = models.DateTimeField(blank=True, null=True)
work_location = models.ForeignKey(Location, related_name='%(class)s_requests_created_109',related_query_name='%(class)s_requests_created_7s1',blank=True, null=True)
exam_location = models.ForeignKey(Location, related_name='%(class)s_requests_created_101',related_query_name='%(class)s_requests_created_7s2',blank=True, null=True)
total_work_experience_in_months = models.IntegerField( blank=True, null=True)
math_proficiency_level = models.CharField(max_length=45, blank=True, null=True)
prior_student_flag = models.IntegerField(blank=True, null=True)
bits_student_id = models.CharField( max_length=15, blank=True, null=True)
parallel_studies_flag = models.IntegerField(blank=True, null=True)
bonafide_flag = models.IntegerField(blank=True, null=True)
# created_on_datetime = models.DateTimeField(blank=True, null=True)
# last_updated_on_datetime = models.DateTimeField(blank=True,
class StudentCandidateQualification(models.Model):
application = models.ForeignKey(StudentCandidateApplication,related_name='%(class)s_requests_created_12')
school_college = models.CharField(max_length=45, blank=True, null=True)
duration = models.IntegerField(blank=True, null=True)
percentage_marks_cgpa = models.DecimalField( max_digits=10, decimal_places=2, blank=True, null=True)
completion_year = models.IntegerField( blank=True, null=True)
division = models.CharField( max_length=10, blank=True, null=True)
degree = models.ForeignKey(Degree, related_name='%(class)s_requests_created_13',blank=True, null=True)
discipline = models.ForeignKey(Discpline, related_name='%(class)s_requests_created_14',blank=True, null=True)
def __unicode__(self):
return self.school_college
class StudentCandidateWorkExperience(models.Model):
application = models.ForeignKey(StudentCandidateApplication,related_name='%(class)s_requests_created_15')
organization = models.CharField(max_length=50,blank=True, null=True)
# start_date = models.DateTimeField(blank=True, null=True)
# end_date = models.DateTimeField(blank=True, null=True)
designations = models.CharField( max_length=100,blank=True, null=True)
def __unicode__(self):
return self.organization
Views.py:
@login_required
def ApplicationForm(request):
StudentFormset=inlineformset_factory(User, StudentCandidateApplication,exclude=('application_status',
'bonafide_flag','parallel_studies_flag'),max_num=1, extra=1,validate_max=True,can_delete=True)
QualificationFormset=modelformset_factory(StudentCandidateQualification,
exclude=('application',),validate_max=True,can_delete=True)
ExpFormset=modelformset_factory(StudentCandidateWorkExperience,
exclude=('application',),validate_max=True,can_delete=True)
if request.method =='POST':
try:
studentFormset=StudentFormset(request.POST,instance=request.user)
qualificationFormset=QualificationFormset(request.POST)
expFormset=ExpFormset(request.POST)
except ValidationError:
studentFormset=None
qualificationFormset=None
expFormset=None
print studentFormset.is_valid() , qualificationFormset.is_valid() , expFormset.is_valid()
if studentFormset.is_valid() and qualificationFormset.is_valid() and expFormset.is_valid():
studentFormset.save()
applicant=StudentCandidateApplication.objects.get(login_email=request.user)
qlist =[]
elist=[]
for form in qualificationFormset:
qForm=form.save(commit=False)
qForm.application=applicant
qlist.append(qForm)
for form in expFormset:
eForm=form.save(commit=False)
eForm.application=applicant
elist.append(eForm)
print qlist,elist
StudentCandidateQualification.objects.bulk_create(qlist)
StudentCandidateWorkExperience.objects.bulk_create(elist)
return HttpResponseRedirect('/admin/')
else:
studentFormset=StudentFormset(instance=request.user)
qualificationFormset=QualificationFormset()
expFormset=ExpFormset()
return render(request,'application_form.html',{'studentFormset':studentFormset,
'qualificationFormset':qualificationFormset,
'expFormset':ExpFormset,
})
当我尝试存储多个教育和体验详细信息时,它只会插入第一条记录。