On Thursday, October 17, 2013 2:23:09 PM UTC-4, Nicolas Palacios wrote:
>
> Hi, I want to give a compound format to my table_b table :
>
> db.define_table('table_a',
>     Field('name', length=20),
>     Field('serial', 'integer'),
>     Field('signed', 'date', required=True),
>     format='%(serial)s')
>
> db.define_table('table_b',
>     Field('list', length=20),
>     Field('tab_a', db.table_a),
>     format='%(list)s - %(tab_a)s')
>
> Using %(tab_a)s I want to get the table_a serial field, not id, how can I 
> get it?
>

The "format" attribute can be a function that takes the row object and 
returns whatever you want.  In this case, you need to explicitly retrieve 
the db.table_a record and get the "serial" field:

db.define_table('table_b',
    Field('list', length=20),
    Field('tab_a', db.table_a),
    format=lambda row: '%s - %s' % (row.list, row.tab_a.serial)) 

Note, row.tab_a.serial is a recursive select -- alternatively, you could do 
db.table_a(row.tab_a).serial. In either case, this will involve a query of 
the table_a table.

Anthony

-- 
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/groups/opt_out.

Reply via email to