Python 向web2py表单添加附加验证要求?
我知道如何在数据库级别向SQLFORM字段添加验证。但是,我找不到任何关于在单个表单级别执行此操作的信息。理想情况下,我可以拥有一个现有的SQLFORM,并说:Python 向web2py表单添加附加验证要求?,python,web2py,Python,Web2py,我知道如何在数据库级别向SQLFORM字段添加验证。但是,我找不到任何关于在单个表单级别执行此操作的信息。理想情况下,我可以拥有一个现有的SQLFORM,并说: form.field.requires = # some extra validator 是否有类似的情况?首先,请注意,web2py验证器从来都不在数据库级别,即使指定为表定义的一部分,它们始终在表单级别强制执行 SQLFORM用于构建表单字段的输入、选择和文本区域帮助器都具有requires属性,该属性可以是单个验证器或验证器列表
form.field.requires = # some extra validator
是否有类似的情况?首先,请注意,web2py验证器从来都不在数据库级别,即使指定为表定义的一部分,它们始终在表单级别强制执行 SQLFORM用于构建表单字段的输入、选择和文本区域帮助器都具有requires属性,该属性可以是单个验证器或验证器列表。创建表单时,SQLFORM会自动将数据库表字段的验证器复制到关联的表单小部件。因此,最简单的方法是在创建SQLFORM之前为数据库表字段指定验证器:
def myform():
db.mytable.myfield.requires = IS_IN_SET(['a', 'b', 'c'])
form = SQLFORM(db.mytable).process()
return dict(form=form)
在这种情况下,SQLFORM将把验证器从db.mytable.myfield复制到表单中关联的myfield小部件
您还可以在创建表单之后但在处理表单之前,直接向小部件添加验证程序:
form = SQLFORM(db.mytable)
form.custom.widget.myfield['requires'] = IS_IN_SET(['a', 'b', 'c'])
form.process()
访问字段小部件的另一种方法:
form.element('input[name=myfield]')['requires'] = IS_IN_SET(['a', 'b', 'c'])