how to display the value of a reference field, instead of the id in sqlform.grid

271 views
Skip to first unread message

dave

unread,
Oct 7, 2012, 3:26:31 AM10/7/12
to web...@googlegroups.com

grid
= SQLFORM.grid(query, args=[request.args(0)],
                                    fields
=[db.auth_user.test0,
                                    db
.auth_user.test1,
                                    db
.auth_user.test2,
I have defined this in my controller, the value of test1 is a reference to another table, how would I make web2py show the referenced value instead of displaying the id, something equivalent to Field('field2', 'reference employees', requires=IS_IN_DB(db, 'employees.id', '%(name)s')) when defining the table

Anthony

unread,
Oct 7, 2012, 10:37:03 AM10/7/12
to web...@googlegroups.com
How is your "test1" field defined?

dave

unread,
Oct 7, 2012, 3:03:35 PM10/7/12
to
auth.settings.extra_fields['auth_user']= [
 
#Field('name', requires=IS_NOT_EMPTY()),
 
.
 
.
 
.
 
Field('test1', 'reference ranking', requires=IS_IN_DB(db, 'ranking.id', '%(name)s')),
 
.
 
.
 
.

Anthony

unread,
Oct 7, 2012, 9:25:09 PM10/7/12
to web...@googlegroups.com
If you do:

Field('test1', 'reference ranking')

and then make sure the "format" attribute of the "ranking" table is set to '%(name)s', then the "test1" field will automatically get the IS_IN_DB validator you have explicitly defined below, and it will automatically get a "represent" attribute displaying the "name" value from the "ranking" table. However, if you explicitly define your own "requires" attribute, then you don't get the automatic "represent" attribute, and you have to explicitly define that as well (I think we should probably change this, though).

Anthony


On Sunday, October 7, 2012 2:44:44 PM UTC-4, dave wrote:
auth.settings.extra_fields['auth_user']= [
 
#Field('name', requires=IS_NOT_EMPTY()),
 
.
 
.
 
.
 
Field('test1', 'reference ranking', requires=IS_IN_DB(db, 'ranking.id', '%(name)s')),
 
.
 
.
 
.


On Sunday, October 7, 2012 7:37:03 AM UTC-7, Anthony wrote:

dave

unread,
Oct 7, 2012, 10:17:49 PM10/7/12
to web...@googlegroups.com
Thank you very much, I did not see this in the documentation and yes it would be nice if it is consistent with your expectation

Nguyen Minh Tuan

unread,
May 3, 2013, 12:22:56 PM5/3/13
to web...@googlegroups.com
Hi Anthony,
 
This is seem not work in case self reference.
Ex :
Field('boss', 'reference auth_user')
 
How can I solve in this situation?
 
Thanks,

Anthony

unread,
May 3, 2013, 1:41:41 PM5/3/13
to web...@googlegroups.com
What doesn't work exactly? With self references, you have to define your own validator and represent attribute because the table doesn't yet exist at the time the Field is created.

Anthony
Reply all
Reply to author
Forward
0 new messages