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.
>
>
>