2016-09-17 114 views
1

我试图让表单使用Charfield进行验证,但使用Select小部件。表单验证在Django中失败

这里是我的view.py代码:

def mpld3plot(request): 
    form = PlotlyPlotForm() 
    form.fields['plot_file'].widget.choices = own_funcs.uploaded_files(string=False) 

    if request.method == 'POST': 
     print(form.is_valid()) 
     if form.is_valid(): 

      return HttpResponseRedirect('/mpld3') 

     else: 
      pass 
    else: 
     pass 

    return render(request, 'evert/plot.html', {'plottype': 'MPLD3', 
               'form': form}) 

下面是我的forms.py代码:

class Mpld3PlotForm(forms.Form): 

    plot_file = forms.CharField(widget=forms.Select(choices=[('', 'a'), ('', 'b')])) 

形式不上提交验证。我根据上传的文件动态更新选项。任何帮助,将不胜感激。

回答

0

原来我没有通过request对象的形式。

view.py文件应该如下所示:

def mpld3plot(request): 
    form = PlotlyPlotForm(request.POST) 
    form.fields['plot_file'].widget.choices = own_funcs.uploaded_files(string=False) 

    if request.method == 'POST': 
     print(form.is_valid()) 
     if form.is_valid(): 

      return HttpResponseRedirect('/mpld3') 

     else: 
      pass 
    else: 
     pass 

    return render(request, 'evert/plot.html', {'plottype': 'MPLD3', 
               'form': form})