{{=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
>>>
>>>
>>>
>>>
>>
>

Reply via email to