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
>>
>>

Reply via email to