我正在使用web2py框架,我正在尝试创建一个没有提交按钮的SQLFORM。我有多个表单,有共同的字段,所以我不能使用SQLFORM.factory(),我希望只有一个带有提交按钮的表单,它将处理页面上所有其他表单的数据。有关最佳方法的任何建议吗?
答案 0 :(得分:2)
form1 = SQLFORM(db.table1, buttons=[])
这将设置一个没有任何按钮的表单,所以也不提交。
答案 1 :(得分:1)
我想有一种方法可以将所有表单的_formkey和_formname字段设置为相同的值。像这样:
my_form2.formname = my_form1.formname
my_form2.formkey = my_form1.formkey
如果您想手动隐藏提交按钮,请尝试以下操作:
my_form1.element('input', _type = 'submit')['_style'] = 'display:none'
保留其中一个提交按钮,其中formname和formkey已设置为等于其他表单的值完整 - 此按钮将用于提交表单。
将vars插入db表可以完成如下操作:
db.table1.insert(**db.table1._filter_fields(request.vars))
db.table2.insert(**db.table2._filter_fields(request.vars))
如果字段具有相同的名称,则可能存在一些问题,因此请小心。
答案 2 :(得分:0)
我认为你可以将不同的SQLFORMs合并到一个表单中。因此,只需一个提交按钮,您将只获得一个“多个表单”。在您的控制器中有类似的东西:
form1 = SQLFORM(db.table1)
form2 = SQLFORM(db.table2)
form1.append(form2)
if form1.process().accepted:
#filter the fields from each form do whatever you want
response.flash = 'OK'
elif form1.errors:
response.flash = 'NOT OK'
return dict(form=form1)
你有没有看到我刚问过form1?这是因为他是主要的形式,当然,你在你的表格中做了正确的过滤。希望这可以帮助。