Richard, wouldn't be better organizing your form direct in HTML using
custom.form tags?
On 06/28/2012 01:00 PM, Richard Vézina wrote:
Forget the precedent email... I think I found how, it didn't work the
first time I try, so I just put everything into string, maybe I had
problem with a comma...
inputs_list = []
for a in field1_names_dict:
inputs_list.append(Field(field1_names_dict[a]['field1_name']+'_f1',
type='boolean', widget=SQLFORM.widgets.checkboxes.widget,
requires=IS_EMPTY_OR(IS_IN_SET([assay_names_dict[a]['field1_name_ui']]))))
inputs_list.append(Field(field1_names_dict[a]['field1_name']+'_f2',
db.ref_tab1, requires = IS_EMPTY_OR(IS_IN_DB(db,'ref_tab1.id
<http://ref_tab1.id>','%(REPRESENTFIELD)s'))))
inputs_list.append(Field(field1_names_dict[a]['field1_name']+'_f3',
db.ref_tab2, requires = IS_EMPTY_OR(IS_IN_DB(db,'ref_tab2.id
<http://ref_tab2.id>','%(REPRESENTFIELD)s'))))
I I just have to add the formstyle in the SQLFORM.factory call :
form = SQLFORM.factory(*inputs_list, formstyle='divs')
On Thu, Jun 28, 2012 at 11:47 AM, Richard Vézina
<[email protected] <mailto:[email protected]>> wrote:
Hello Anthony,
If I don't use eval(), should I use web2py dummy table, I don't see
how I will be able to build dummy table dynamically and declare it
as inputs_list to be use with the asterisk... If I just put a
asterisk in front of my actual generated inputs_list it not working
since the item in the list are text. I don't see how I can insert
Field into the list without generating them as strings...
I will read a bit the links you sent.
Thanks.
Richard
On Thu, Jun 28, 2012 at 11:29 AM, Anthony <[email protected]
<mailto:[email protected]>> wrote:
I wounder what should be the best way to alter a form
generated by SQLFORM.factory in a way where fields will be
placed into a html table a 3 columns.
So each 3 fields I need to insert a "tr" and each field need
to be in a "td"...
You might want to create a custom form layout in the view:
http://web2py.com/books/default/chapter/29/7#Custom-forms. That
way you can still use SQLFORM.factory to handle all the widget
creation and processing, but you can present the fields however
you want. You might also check out plugin_solidform
<http://dev.s-cubism.com/plugin_solidform>.
formstring = "SQLFORM.factory(" +','.join(inputs_list)+")"
form = eval(formstring)
No need to eval code like that in Python. If you have a list of
objects you want to submit as separate args to a function, just
precede the list with an asterisk:
|
form =SQLFORM.factory(*input_list)
|
In that case, you can change the way you define the Field items
in the list -- make them actual Field() objects rather than just
strings of code.
Note, for keyword arguments, you can submit a dictionary
preceded by two asterisks:
|
some_function(**some_dictionary)
|
Anthony