Your way will work, but you can do it easier by just using 
sqlform.smartgrid - the tables will be automatically generated. It works 
for the simple case where you want to give people the ability to add an 
item, add a category, and also associate any item with any category.

On Friday, April 11, 2014 12:34:24 PM UTC-4, Cristian Re wrote:
>
> Hello to all,
>
> assuming I have in db.py these tables:
>
> db.define_table('items', 
>                 Field('item', requires=IS_NOT_EMPTY()),
>                 format='%(item)s'
>                 )
>
> db.define_table('types',
>                 Field('type_name', requires=IS_NOT_EMPTY()),
>                 format='%(type)s'
>                 )
>                 
> db.define_table('item_type',
>                 Field('item_id', 'reference items'),
>                 Field('types_id', 'reference types')
>                 )
>
> I have for example 50 items and 3 types and I would like to associate into 
> table item_type any item to a type.
> In my mind there is a page with a table with all the items; on the left 
> there is the neme of the item and on the right a select list with all the 
> types.
>
> what is the right way to do this with web2py?
>
> in my controller I tried with:
>
> def item_type():
>     items =  db().select(db.items.ALL)
>     types =  db().select(db.type.ALL)
>     return dict(items=items, types=types)
>
> and into a view:
>
>
> <form enctype="multipart/form-data" action="{{=URL()}}" method="post">
> <table>
>     {{for en, item in enumerate(items):}}
>     <tr>
>         <td>
>             <input type="hidden" value="{{=item.id}}" name="item_{{=en}}" 
> />{{=item.item}}
>         </td>
>         <td>
>             <select name="type_{{=en}}">
>                 <option value="-1">-</option>
>                 {{for type in types:}}
>                     <option value="{{=type.id
> }}">{{=type.type_name}}</option>
>                 {{pass}}
>             </select>
>         </td>
>     </tr>
>     {{pass}}
>     <tr>
>         <td><input type="submit" value="{{=T('Submit')}}" /></td>
>     </tr>
> </table>
>
> It's the right way or I can do something better?
>
> thanks in advance
>
>
>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to