Try replace

lambda row: (something that return the brands.name of the 
products.brand_id_01 current row)

with

lambda row: 
(db.brands<http://www.google.com/url?q=http%3A%2F%2Fdb.brands.name&sa=D&sntz=1&usg=AFQjCNE3jQMLe-HFn1TMWcTiEsecaE2E1w>
(row.brand_id_01).name)

On Sunday, 8 December 2013 11:26:34 UTC-6, Gael Princivalle wrote:
>
> Thanks Stifan but also with:
> db.products.brand_id_01.requires = IS_IN_DB(db, db.brands.id, '%(name)s')
> web2py don't display the 
> "db.brands.name<http://www.google.com/url?q=http%3A%2F%2Fdb.brands.name&sa=D&sntz=1&usg=AFQjCNE3jQMLe-HFn1TMWcTiEsecaE2E1w>"
>  
> instead of the "db.products.brand_id_01"..
>
> A solution could be make lambda function, what do you think about 
> something like that ?
> In the controller:
> def products_listing():
>     query=db.products
>     links = [dict(header=T('Brand'), body=lambda row: (something that 
> return the brands.name of the products.brand_id_01 current row)]
>     fields = 
> (db.products.id_01,db.products.code,db.products.description,db.products.brand_id_01)
>     grid = SQLFORM.grid(query, fields=fields, links=links)
>     return dict(grid=grid)
>
> Is it possible ?
>
> Il giorno domenica 8 dicembre 2013 17:10:18 UTC+1, 黄祥 ha scritto:
>>
>> i think you should refer it to db.brands.id. e.g.
>> db.define_table('brands',
>>                 Field('id_01', unique = True),
>>                 Field('name'),
>>                 format='%(name)s')
>> db.define_table('products',
>>                 Field('code', unique=True),
>>                 Field('description'),
>>                 Field('brand_id_01', 'reference brands', requires = 
>> IS_IN_DB(db, db.brands.id, '%(name)s')))
>>
>> it requires the table products to refer to brands id field not id_01 in 
>> table brands. not sure what do you want to achieve in here, i think you can 
>> make conditional requires.
>> e.g. (not tested)
>> if 'crm' in request.function :
>>     db.products.brand_id_01.requires = IS_IN_DB(db, db.brands.id, 
>> '%(id_01)s')
>> else:
>>     db.products.brand_id_01.requires = IS_IN_DB(db, db.brands.id, 
>> '%(name)s')
>>
>> my point is the reference field in products table is refer to the id 
>> field on brands, and for the field represented on drop down list is base on 
>> the function, if it contain 'crm' it will show the brands.id_01, other 
>> function will show the name.
>>
>> ref:
>>
>> http://web2py.com/books/default/chapter/29/07/forms-and-validators#Database-validators
>>
>> http://web2py.com/books/default/chapter/29/06/the-database-abstraction-layer#Record-representation
>>
>> best regards,
>> stifan
>>
>

-- 
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 web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to