没有提交按钮的SQLFORM

时间:2013-07-19 19:59:51

标签: python web2py

我正在使用web2py框架,我正在尝试创建一个没有提交按钮的SQLFORM。我有多个表单,有共同的字段,所以我不能使用SQLFORM.factory(),我希望只有一个带有提交按钮的表单,它将处理页面上所有其他表单的数据。有关最佳方法的任何建议吗?

3 个答案:

答案 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?这是因为他是主要的形式,当然,你在你的表格中做了正确的过滤。希望这可以帮助。