2013-07-19 170 views
1

我正在使用web2py框架,我试图创建一个没有提交按钮的SQLFORM。我有多种形式,有相同的字段,所以我不能使用SQLFORM.factory(),我希望只有一个带有提交按钮的表单,它将处理来自页面上所有其他表单的数据。任何建议最好的方式来做到这一点?SQLFORM没有提交按钮

回答

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

1

我想一种方法可以将所有窗体的_formkey和_formname字段设置为相同的值。事情是这样的:

my_form2.formname = my_form1.formname 
my_form2.formkey = my_form1.formkey 

如果你想隐藏手动提交按钮,尝试这样的事情:

my_form1.element('input', _type = 'submit')['_style'] = 'display:none' 

离开该表格名称和formkey已设置等于值提交按钮之一其他表格完好无损 - 此按钮将用于提交表格。

插入瓦尔到数据库表中可以做类似:

db.table1.insert(**db.table1._filter_fields(request.vars)) 
db.table2.insert(**db.table2._filter_fields(request.vars)) 

如果字段具有相同的名称,有可能是麻烦一些潜在的,所以要小心。

2
form1 = SQLFORM(db.table1, buttons=[]) 

这将设置一个没有任何按钮的窗体,所以不要提交。