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'