Am 16.06.2012 22:30, schrieb Anthony: > Reference fields automatically get an IS_IN_DB validator, but you can > explicitly specify your own and pass a DAL Set as the first argument > to filter the auth_user records: > > || > 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)), > [etc.] > > The db(query) part of that should specify a query to restrict the set > to users with particular memberships. See the book section on database > validators > <http://web2py.com/books/default/chapter/29/7#Database-validators> for > more details. > > Anthony Hello Anthony,
thanks, this works like a charm. query = ((db.auth_user.id == db.auth_membership.user_id)& (db.auth_membership.group_id == auth.id_group(settings.groupname_customer))) 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), db.auth_user.id, '%(first_name)s %(last_name)s (%(email)s)') ), auth.signature, format='%(f_contact)s', migrate=settings.migrate) But now when I have an SQLFORM.grid like this: query = ((db.t_customer_contact.f_customer == customer_id)) contact_list = SQLFORM.grid(query=query, fields=[db.t_customer_contact.f_contact], editable=False, deletable=True, details=False, csv=False, searchable=True, create=False, ) 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. Kind regards Cornelius
signature.asc
Description: OpenPGP digital signature