2016-09-08 11 views
0

JavaScriptを使用して実行時に入力/変更されるSelectMultipleFieldがあります。私の問題は、これがバリデータに違反しているため、form.validate_on_submit()の呼び出しは常に失敗するということです。WTForms SelectMultipleField:有効化を無効にする

SelectMultipleField('Test', coerce=int) 

私はすでに何もしない、私のカスタムバリデータを設定しようとしました:

def dummy_validator(form, field): 
    print("check: "+str(field.data)) 

SelectMultipleField('Test', coerce=int, [dummy_validator]) 

は、しかし、これはまだ失敗。たとえば、エラーメッセージ'7' is not a valid choice for this fieldが表示されます。

SelectMultipleFieldをform.validate_on_submit()で開始された検証プロセスに合格させるためには何が必要ですか?

答えて

3

問題はpre_validationであり、指定されたバリデータが実行される前に常に実行されます。したがって、私の質問のdummy_validatorはこの動作を変更しません。

これを変更する唯一の方法は、SelectMultipleFieldから派生した独自のフィールドを実装することです:

class NoValidationSelectMultipleField(SelectMultipleField): 
    def pre_validate(self, form): 
     """per_validation is disabled""" 

その後1は直接フォームのフィールドを使用することができます。

NoValidationSelectMultipleField('Test', coerce=int) 
+0

これはで私のために働きました非常に似た問題です。私は、jqueryを使って非表示のフィールドにオプションを動的に作成していましたが、フォームは同じエラーで不平を言っていました。これは、form.validate_on_submitの後にカスタム検証を書く必要があることを意味しますか? – waldopat

関連する問題