我知道如何在数据库级别向 SQLFORM 字段添加验证。然而,我找不到任何关于在个人表格层面上做到这一点的信息。理想情况下,我能够拥有一个现有的 SQLFORM 并说出如下内容:
form.field.requires = # some extra validator
有这样的事情吗?
最佳答案
首先,请注意,web2py 验证器永远不会处于数据库级别,即使指定为表定义的一部分 - 它们始终在表单级别强制执行。
SQLFORM 用于构建表单字段的 INPUT()
、SELECT()
和 TEXTAREA()
帮助程序均采用“require” 属性,可以是单个验证器或验证器列表。创建表单时,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'])
关于python - 向 web2py 表单添加额外的验证要求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11805620/