1
我知道如何將驗證添加到數據庫級別的SQLFORM字段。但是,我無法在個人形式的層面上找到任何有關這樣做的事情。理想情況下,我可以有一個現有的SQLFORM並且說類似:向web2py表單添加額外的驗證要求?
form.field.requires = # some extra validator
是否有類似的情況?
我知道如何將驗證添加到數據庫級別的SQLFORM字段。但是,我無法在個人形式的層面上找到任何有關這樣做的事情。理想情況下,我可以有一個現有的SQLFORM並且說類似:向web2py表單添加額外的驗證要求?
form.field.requires = # some extra validator
是否有類似的情況?
首先,請注意,即使將web2py驗證程序指定爲表定義的一部分,它也不會處於數據庫級別 - 它們始終在表單級別執行。
是SQLFORM用來建立表單字段都採取的INPUT()
,SELECT()
和TEXTAREA()
幫手「要求」屬性,它可以是一個單一的驗證或驗證的名單。創建表單時,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'])