【问题标题】:How to save a multiple django forms into a database in a good way? Enhance Performance如何以一种好的方式将多个 django 表单保存到数据库中?提高性能
【发布时间】:2014-08-15 21:39:16
【问题描述】:

我想以一种好的方式将多个 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/")

【问题讨论】:

    标签: mysql database django forms


    【解决方案1】:
    1. 将以上所有代码放入transaction
    2. 使Employee继承User。阅读更多关于 Django 中的 model inheritance 的信息。
    3. 您创建Employee 对象,然后使用Employees.objects.filter(id=emp.id).update(Code=...) 更新它。只需在第一次保存前修改代码
    4. django-modelcluster 可以帮助你。值得一试。

    【讨论】:

      猜你喜欢
      • 2011-01-21
      • 2014-09-17
      • 1970-01-01
      • 1970-01-01
      • 2016-10-15
      • 1970-01-01
      • 2017-03-06
      • 1970-01-01
      • 2018-06-23
      相关资源
      最近更新 更多