You cannot perform a query to a Virtual Field, queries run on database level, virtual fields runs on app level.
You can just fetch a subset of rows then use .find() to fiter that rows. On Thu, Mar 15, 2012 at 5:55 PM, monotasker <[email protected]> wrote: > I had a nice query set up and working that looked for any match between > items in a list and records in a list-reference field: > > catXtags = [2,4,6,7,9] > curr_loc.id = 6 > > db((db.paths.tags.contains(catXtags)) & (db.paths.locations.contains( > curr_loc.id)) > > I changed db.paths.tags to be a virtual field that constructs the same > list of foreign id's dynamically. But now when I run the query I get this > error: > > <type 'exceptions.KeyError'> 'tags' > The weird thing is that when I print db.paths.tags in the preceding line I > get a nice list of integers. So the key 'tags' does seem to exist in > db.paths.fields and the data should be the right format. I'm really not > sure what I'm doing wrong! > > Any help is much appreciated. For reference, the full error traceback is > below. > > > Traceback (most recent call last): > File "/home/ian/web/web2py/gluon/restricted.py", line 204, in restricted > > exec ccode in environment > File "/home/ian/web/web2py/applications/paideia/controllers/exploring.py" > <http://127.0.0.1:8000/admin/default/edit/paideia/controllers/exploring.py>, > line 104, in <module> > > File "/home/ian/web/web2py/gluon/globals.py", line 172, in <lambda> > > self._caller = lambda f: f() > > File "/home/ian/web/web2py/gluon/tools.py", line 2533, in f > > return action(*a, **b) > File "/home/ian/web/web2py/applications/paideia/controllers/exploring.py" > <http://127.0.0.1:8000/admin/default/edit/paideia/controllers/exploring.py>, > line 95, in index > > return step_init() > File "/home/ian/web/web2py/applications/paideia/controllers/exploring.py" > <http://127.0.0.1:8000/admin/default/edit/paideia/controllers/exploring.py>, > line 21, in step_init > > path_result = path.pick() > File "applications/paideia/modules/paideia_exploring.py", line 196, in pick > > p = self.find_paths(cat, curr_loc) > > File "applications/paideia/modules/paideia_exploring.py", line 232, in > find_paths > > catXpaths = db((db.paths.tags.contains(catXtags)) > > File "/home/ian/web/web2py/gluon/dal.py", line 5542, in __getattr__ > > return self[key] > File "/home/ian/web/web2py/gluon/dal.py", line 5482, in __getitem__ > > return dict.__getitem__(self, str(key)) > KeyError: 'tags' > > > -- Bruno Rocha [http://rochacbruno.com.br]

