> > yes, you are right, db.auth_user will return all the users table.
please try to change > Field('hotel_chain_manager', db.auth_user) > into > Field('hotel_chain_manager', 'reference auth_user', > default=auth.has_membership('Admin')) > He wants to limit the options shown in the dropdown, not set a single default value (also, auth.has_membership() returns True/False, not a user ID). When you specify a reference field, you get a default IS_IN_DB validator, but you can explicitly define your own, which enables you to specify a Set object as the first argument to limit the records displayed (see http://web2py.com/books/default/chapter/29/07#Database-validators): Field('hotel_chain_manager', 'reference auth_user', requires=IS_IN_DB(db((db.auth_user.id == db.auth_membership.user_id) & (db.auth_group.id == db.auth_membership.group_id) & (db.auth_group.role == 'Admin')), 'auth_user.id', db.auth_user._format), represent=lambda id, row: db.auth_user._format % row) Note, when you explicitly specify the "requires" of a reference field, you lose the default "represent" attribute, so you have to add that explicitly as well. Anthony > > > hope this can help > > best regards > > On Tuesday, May 7, 2013 7:24:05 AM UTC-4, José Manuel López wrote: >> >> >> >> Hi!, >> Thank you for your answer, but it's not exactly what I want. >> I'll explain better: >> Let's say I have this table: >> db.define_table('Hotel', >> Field('name', label="Nombre del Hotel "), >> Field('hotel_type', db.BookingCategory), >> Field('hotel_chain_manager', db.auth_user)) >> >> And now I've a SQLFORM.grid like this: >> >> >> form = SQLFORM.grid(db.Hotel, >> searchable=True, >> deletable=True, >> details=True, >> selectable=False, >> create=True, >> sortable=True, >> fields=fields, >> paginate=100, >> maxtextlength=75, >> links_in_grid=True) >> >> as you can see, it is editable, but the Field "hotel_chain_manager" in the >> form will be populated with ALL the users in db. This is not what I want, I >> want that this field will be populated *only with the users in the >> "Admin" membership*. >> >> Kind Regards!! >> >> On Tuesday, May 7, 2013 10:36:04 AM UTC+2, 黄祥 wrote: >>> >>> i think you can achieve it (in controller using grid) with >>> editable = auth.has_membership('Admin') >>> >>> e.g. >>> def booking(): >>> has_membership=auth.has_membership('Admin') >>> grid=SQLFORM.grid(db.booking, editable=has_membership) >>> return locals() >>> >>> best regards >>> >>> On Tuesday, May 7, 2013 3:16:11 PM UTC+7, José Manuel López wrote: >>>> >>>> Hi, >>>> I've a " form = SQLFORM.grid " that let the user edit the rows. >>>> In the edit form I want that one of the field populated only with >>>> "Admins". Now I have this field populated with all the db.auth_user and is >>>> huge and very hard to find the correct user. >>>> How can I do it?, I'm thinking in something like: >>>> *db.Hotel.chainManager **=IS_IN_DB( ¿¿??? )* .... how to express >>>> only users with Admin membership?. >>>> >>>> Thank you. >>>> >>> -- --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.