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

2024-09-28 21:32:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两张表。表单没有任何相关字段。你知道吗

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

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

我有三种情况:

  1. 用户必须从表单1中选择一个或多个文件并保留 p其他窗体为空
  2. 用户必须从表单2中选择一个或多个文件并保留 其他窗体为空
  3. 从两个表单中选择文件。你知道吗

每种形式都必须单独使用

这是我的观点:

 @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中选择文件时,效果很好 但是当我试图同时保存两个forma时,我得到了错误 两个表单的每个字段都需要文件。你知道吗

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

  1. 保存这两个表单 或

  2. 只保存表格1

有什么建议吗

提前谢谢


Tags: 文件form表单ifisrequestloginproc
1条回答
网友
1楼 · 发布于 2024-09-28 21:32:15

您可能希望简化所有这些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)

相关问题 更多 >