在Django中的一个模板中保存两个表单时出错

时间:2015-02-26 21:56:14

标签: python django django-forms django-views

我有2个表单的视图。表格没有任何相关字段。

表格1: 有一个FilteredSelectMultiple小部件显示从ftp服务器下载的一些文件。此表单中的每个文件都符合某些条件

表格2: 让FilteredSelectMultiple小部件显示与同一FTP服务器中的任何条件都不匹配的文件

我有3个场景:

  1. 用户必须从表单1中选择一个或多个文件并保留 pther form empty
  2. 用户必须从表单2中选择一个或多个文件并离开 其他形式为空
  3. 从2个表单中选择文件。
  4. 每个表单必须单独工作

    这是我的观点:

     @login_required(login_url='/login/')
        def archivoview2(request):
            usuario = request.user
            nomigrado = Archivo_NoMigrado()
            spnm = nomigrado.archivos_nomig()
            form = ProcFTPForm(usuario,prefix='f')
            form2 = DesconocidoForm2(initial={'usuario':usuario},prefix='d')
    
            if request.method == 'POST':
               if form.is_valid():
                  form.save()
            if request.method == 'POST' and not form.is_valid():
               form = ProcFTPForm(usuario,request.POST)
               form2 = DesconocidoForm2(request.POST)
               if form2.is_valid():
                  form2.save()
         #--Run stored procedure for files matching criteria---   
                  proc = Lista_Final()
                  lista = proc.archivos()
                  tabla = Proc_Carga()
                  sp = tabla.carga()
         #--Run Stored Procedures for unknown files------
                  carga = Carga_Unknown()
                  spcarga = carga.desconocido()
                  return HttpResponseRedirect('/resumen/')
    
            if request.method == 'POST' and not form2.is_valid():
               form = ProcFTPForm(usuario,request.POST)
               form2 = DesconocidoForm2(request.POST)
               if form.is_valid():
                  form.save()
             #--Run stored procedure for files matching criteria---
                  proc = Lista_Final()
                  lista = proc.archivos()
                  tabla = Proc_Carga()
                  sp = tabla.carga()
                  return HttpResponseRedirect('/resumen/')
            return render_to_response("archivo2.html",
                              {'form':form,'form2':form2},
                              context_instance=RequestContext(request))
    

    当我只从表单1中选择文件时工作正常 但是当我试图同时保存两个格式时,我得到了错误 来自两种表格的每个字段中的需要文件

    至少我需要完成两个场景:

    1. 保存两个表格 或

    2. 仅保存表单1

    3. 任何建议

      感谢提前

1 个答案:

答案 0 :(得分:0)

您可能希望简化所有if request.method=='POST' ...条件。这是我处理多种形式的方式。我不知道这是否正是处理两种形式的规范方式,但它看起来很干净。显然,这不是你的所有“运行存储过程”命令,也不是你的重定向。

form = ProcFTPForm(usuario,prefix='f')
form2 = DesconocidoForm2(initial={'usuario':usuario},prefix='d')
if request.method=='POST':
    form = ProcFTPForm(request.POST, usuario)
    form2 = DesconocidoForm2(request.POST)
    if form.is_valid():
        form.save()
    if form2.is_valid():
        form2.save()
else:
    template = 'archivo2.html'
    context = {
        'form': form,
        'form2': form2,
    }
return render(request, template, context)