我想保存多个django表单到一个很好的方式数据库,因为它需要很长时间来保存这些表单在服务器上。表格是相互关联的,所以我使用了"一个表格一个"的连续保存技术。如何维护我的表单,以便快速保存到数据库。
形式代码:
employee_main=EmployeesForm(request.POST)
employee_administrative=EmployeesAdminstrativeForm(request.POST)
employee_stay=EmployeesStayForm(request.POST,request.FILES)
employee_dependents=EmployeesDependentsForm(request.POST,request.FILES,prefix="u")
employee_insurance=EmployeesInssuranceForm(request.POST,request.FILES)
employee_security=EmployeesSecurityForm(request.POST,request.FILES)
if employee_main.is_valid() and employee_administrative.is_valid() and employee_stay.is_valid() and employee_dependents.is_valid() and employee_insurance.is_valid() and employee_security.is_valid():
emp=employee_main.save(commit=False)
emp.save()
emp_ad=employee_administrative.save(commit=False)
emp_ad.employee_id=emp.id
emp_ad.save()
jobtitle_code=JobTitle.objects.get(id=emp_ad.jobtitle_id).Code
Employees.objects.filter(id=emp.id).update(Code=jobtitle_code +"-"+ str(emp_ad.employee_id+25))
Employees.objects.filter(id=emp_ad.moder_id).update(ismodeer=True)
emp_s=employee_stay.save(commit=False)
emp_s.employee_id=emp.id
emp_s.save()
emp_dd=employee_dependents.save(commit=False)
emp_dd.employee_id=emp.id
emp_dd.save()
emp_ss=employee_insurance.save(commit=False)
emp_ss.employee_id=emp.id
emp_ss.save()
from authentication.models import users
user=users(employee_id=emp.id,UserName=request.POST["UserName"],Password=request.POST["Password"],isadmin=0)
user.save()
return HttpResponseRedirect("/employees/all_employees/")
- 将上述所有代码放到一个事务中。
- 使
Employee
继承User
。在Django中阅读更多关于模型继承的内容。 - 您创建
Employee
对象,然后使用Employees.objects.filter(id=emp.id).update(Code=...)
更新它。在第一次保存 之前修改代码 - django-modelcluster可能会帮到你。值得一试。