If you need to fetch all entities knowing the user in advance there is a ultra-simple way to fetch entities in a single query.... Actually I don't think anyone will come up with a solution involving more than 1 additional query to the one required for "selecting" the user.
user = db.auth_user(auth.user_id) entities = db(db.entity.id.belongs(user.entity)).select(db.entity.name) Mind that the auth_user line is copied into session, so if that is always available you can skip the first query and do entities = db(db.entity.id.belongs(auth.user.entity)).select(db.entity.name) Il giorno venerdì 11 maggio 2012 17:28:38 UTC+2, weheh ha scritto: > > db.define_table('entity', Field('name'), format='%(name)s') > auth_user_table = db.define_table( > auth.settings.table_user_name, > ... > Field('entity', 'list:reference db.entity', > requires=IS_IN_DB(db, 'entity.id','%(name)s', multiple=True), > ... > ) > > Later, I want to get a list of entities by name from the list: reference > entry for the current user. > > I would think I could do this: > user = db(db.auth_user.id == auth.user_id).select().first() > entities = db.auth_user.entity.represent(user.entity) > but I get a ticket: > File "N:/web2py/applications/myapp/controllers/mycontroller.py", line 15 > , in myfunc > return dict(etext=db.auth_user.entity.represent(user.entity)) > TypeError: 'NoneType' object is not callable > > > I've tried a few different variations on the theme, but none working so > far. Any help would be appreciated. > > There are obvious slower ways to do this, but inelegant. I want the > fastest, tightest solution. > > >