2011-04-28 47 views
1

我有一個窗體,有一些輸入文本框以及一些選擇框。我有驗證工作完美的文本框。我不在乎是否有任何選擇框被禁用,但每次我提交表單時,它都會顯示一個掛鉤錯誤頁面,提示「無效:請輸入值...」但我不希望這樣做發生。如何讓鐵塔formencode驗證器忽略一些字段

這裏是我的驗證功能:

class Registration(formencode.Schema): 
    allow_extra_fields=True 
    first_name = formencode.validators.String(strip=True, not_empty=True) 
    last_name = formencode.validators.String(strip=True, not_empty=True) 
    address = formencode.validators.String(strip=True, not_empty=True) 
    phone = formencode.validators.PhoneNumber(strip=True, not_empty=True) 
    email = formencode.validators.Email(resolve_domain=True, not_empty=True) 
    messages = { 
     'tooLow': "You must be at least 18 in order to register for an event.", 
     'tooHigh': "You obviously are not that old. Please enter your actual age.", 
    } 
    age = formencode.validators.Int(min=18, max=999, not_empty=True, messages=messages) 

我想用allow_extra_fields =真,將允許未在函數提供,如果留空/默認傳遞的表單字段。我有選擇名爲聽到,頻率和水平應該被忽略的框。

在這裏的任何幫助將不勝感激。

回答

0

我想你應該將下面的行添加到它

filter_extra_fields =真

2

在您formencode.validators方法:

  • 使用not_empty=False如果你的表單提交的字段和值是空的字符串。 param not_empty false是你怎麼說的:empty是一個有效的值。
  • 如果這些字段不存在,則使用if_missing = None,它會將結果設置爲None