2011-04-28 46 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