{{=form.custom.begin}}
<table>
<tr><th>head1</th><th>head2</th><th>head3</th></tr>
{{for a in session.field1_names_dict:}}
<tr>
<td>{{=form.custom.widget[session.field1_names_dict[a]['field1_name']+'_f1']}}</td>
<td>{{=form.custom.widget[session.field1_names_dict[a]['field1_name']+'_f2']}}</td>
<td>{{=form.custom.widget[session.field1_names_dict[a]['field1_name']+'_f3']}}</td>
</tr>
{{pass}}
</table>
{{=form.custom.submit}}
{{=form.custom.end}}
That's!
Thanks web2py and web2py community...
:)
Richard
On Thu, Jun 28, 2012 at 1:55 PM, Richard Vézina <[email protected]
> wrote:
> Yes that what I am doing right now... I generate the form with
> SQLFORM.factory and then in the view as you and Anthony suggest I "refact"
> my form to get what I want.
>
> I am pretty impress by this new feature, I was not aware about custom
> form. It seems exactly what I was searching for...
>
> Thanks.
>
> Richard
>
>
> On Thu, Jun 28, 2012 at 1:15 PM, [email protected] <
> [email protected]> wrote:
>
>> 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>
>>> <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>
>>> <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:ml.richard.vezina@**gmail.com<[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<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<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
>>>
>>>
>>>
>>>
>>
>