2016-09-08 49 views
0

我有一個SelectMultipleField,在運行時使用JavaScript填充/修改。我的問題是這違反了驗證器,因此致電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""" 

之後可以直接使用在表單中的字段:

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

這爲我工作一個非常類似的問題,我在jQuery中動態地在隱藏字段中創建選項,並且表單抱怨有相同的錯誤。這是否意味着我需要在form.validate_on_submit之後編寫自定義驗證? – waldopat