2016-10-21 113 views
0

我在一页上有一些表单,我也尝试验证一些字段。django字段是必填验证器

因此,如果我在测试字段中输入错误的输入,我会明显得到消息'无效输入',而且对于其他字段,'该字段是必需的'消息。

我该如何解决?覆盖干净的功能?但是如何?

class Example1Form(forms.ModelForm): 

    test = forms.CharField(max_length=30, validators=[RegexValidator(r'^[a-zA-Z0-9_-]+$'), MaxLengthValidator(30)]) 

而且我还区分不同的形式,如:

class View(TemplateView): 
    def post(self, request, *args, **kwargs): 
     form_example1 = Example1Form(request.POST) 
     form_example2 = Example2Form(request.POST) 
     if form_example1.is_valid(): 
      .... 
      form_example2 = Example2Form() 
      return render(request, self.template, {'form_example1': form_example1, 'form_example2': form_example2}) 

     if form_example2.is_valid(): 
      .... 

非常感谢您的帮助!

+0

你想解决什么问题? –

+0

我不想得到其他形式的消息。我有很多提交按钮的形式。但是我也得到了'不同形式的'必需'信息。 – ikreb

+0

然后在视图中,您应该检查提交的表单是否提交,并且仅在提交的表单上执行“is_valid”而不是其他表单。 –

回答

1

首先,您需要一种方法来确定哪个表单已提交。你能说出你的提交按钮,例如:

<form> 
    {{ form_example1 }} 
    <input name="form_example_1" type="submit" value="Submit form 1"> 
</form> 

<form> 
    {{ form_example2 }} 
    <input name="form_example_2" type="submit" value="Submit form 2"> 
</form> 

然后,在你看来,你应该只窗体如果在提交表单绑定到POST数据。例如:

if "form_example1" in request.POST: 
    form_example1 = Example1Form(request.POST) 
else: 
    form_example1 = Example1Form() 

if "form_example2" in request.POST: 
    form_example2 = Example2Form(request.POST) 
else: 
    form_example2 = Example2Form() 
+0

非常感谢。它解决了我的问题。 – ikreb