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.