1
def test():

    form = SQLFORM.factory(Field('cards', requires=IS_IN_DB(db, 'tbl_card.id', '%(name)s')))
    form = SQLFORM.factory(Field('evo', requires=IS_IN_DB(db, 'tbl_evo.id', '%(evo_type)s', orderby=db.tbl_evo.id)))

return dict(form=form)

我希望能够在一个视图中拥有多个 SQLFORMS。我将如何从一个控制器功能中做到这一点?

为了我的利益,我将如何调用不同的函数(未命名为 test())在同一视图中生成表单?

4

2 回答 2

3

你有没有看过手册,特别是:

表单和验证器:每页多个表单

于 2013-05-27T10:23:50.527 回答
2

首先,您的代码不处理表单,因此您需要.process()在每个表单上调用该方法。当你这样做时,你可以为每个表单指定一个唯一的名称,这将使 web2py 在提交时能够区分它们:

form1 = SQLFORM.factory(Field('cards',
    requires=IS_IN_DB(db, 'tbl_card.id', '%(name)s')))
form1.process(formname='form1')

如果要调用单独的函数来生成和处理每个表单,可以将这些函数放在模型文件或模块中,然后从 test.html 视图中调用它们。如果您想使用 AJAX,更好的选择是将每个表单放入一个组件LOAD()

{{=LOAD('default', 'myform1', ajax=True)}}
于 2013-05-27T12:43:15.377 回答