2013-07-19 238 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=[]) 

這將設置一個沒有任何按鈕的窗體,所以不要提交。