> > I will not see the f_contact as a name anymore but only as the ids. > When I remove the requires from the table definition the ids are resolved > to the names again. >
Sorry, I forgot -- for reference fields, if you don't specify any validators, it gets a default IS_IN_DB validator, and it also gets a default "represent" attribute. When you explicitly specify your own IS_IN_DB validator, it no longer automatically gets the "represent" attribute, so you have to set that yourself as well. Something like: db.define_table('t_customer_contact', Field('f_customer', db.t_customer, label=T("customer")), Field('f_contact', db.auth_user, label=T("contact"), requires=IS_IN_DB(db(query), 'auth_user.id', format=db.auth_user. _format), represent=lambda id, r: '%(first_name) %(last_name)' % db.auth_user( id)), [etc.] Anthony