2016-10-21 12 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

関連する問題