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

Reply via email to