Rather than : represent= lambda jack,row: db(db.jack_listings.id == row.jack_id_string).select()[0].jack_and_bldg),
You can do : represent= lambda jack,row: db.jack_listings(row.jack_id_string).jack_and_bldg), Richard On Tue, May 22, 2012 at 2:48 PM, Mike <m.she...@gmail.com> wrote: > Nevermind. Just read about the represent functionality for fields and that > addressed this issue. > > For anyone else searching for this problem, this is what I ended up doing: > > Field('jack_id_string',db.jack_listings,requires=[IS_NOT_IN_DB(db,'t_port_to_jack.jack_id_string')], > represent= lambda jack,row: db(db.jack_listings.id == > row.jack_id_string).select()[0].jack_and_bldg), > > (db.jack_listings is another table and 'jack_and_bldg' was the field I > wanted to show up in the grid tables instead of the id #) > > --Mike > > > On Tuesday, May 22, 2012 2:35:01 PM UTC-4, Mike wrote: >> >> Hello, >> >> I am running into a representation issue whenever I try to put a >> validator on a reference field. For example, I have the following table: >> db.define_table('t_port_to_**jack', >> Field('switch', db.switches), >> Field('switch_port_string', type='integer', notnull=True,required= >> True,label=T('The port of the switch the jack connects to')), >> Field('jack_id_string',db.**jack_listings,requires=IS_NOT_** >> IN_DB(db,'t_port_to_jack.jack_**id_string'))) >> >> So the problem I am having is with jack_id_string, I need it to be unique >> in this table but the issue is that as soon as I add this 'requires' >> statement at the end, in all of the CRUD table views, it no longer shows >> the field represented string and instead shows the id #. After I remove the >> requires statement it reverts to the desired behavior where users see the >> db.jack_listings format string instead of the id#. >> >> My question is, how can I keep this requires functionality but still have >> the field display as the correct representation in tables? >> >> Thanks for your help in advance! >> Mike >> >>