Hi,
I am trying to populate a drop down box so that a user may choose a 
"featured Image" from a collection of images. There are multiple 
collections, so I need to filter out the other images that are in the 
different collections. The code I have is shown below:

db.geo_collection.f_featured_img.requires=IS_IN_DB(db, 
(db.geo_item.f_collection_id == db.geo_collection.id),lambda row: '%s' % 
row.id + " - " + row.f_name)

What I had in mind is that the program would go through every item in the 
database, and compare its collection id with the collection's id that we 
are currently looking at. If the item passes this boolean statement, then 
it is added to the dropdown box.

When I do this, it states that there are too many values to unpack. 
Traceback below:

Traceback (most recent call last):
  File "/home/SIRI/web2py/gluon/restricted.py", line 217, in restricted
    exec ccode in environment
  File "/home/SIRI/web2py/applications/mqr/models/db_wizard.py" 
<https://siri.pythonanywhere.com/admin/default/edit/mqr/models/db_wizard.py>, 
line 149, in <module>
    db.geo_collection.f_featured_img.requires=IS_IN_DB(db, 
(db.geo_item.f_collection_id == db.geo_collection.id),lambda row: '%s' % row.id 
+ " - " + row.f_name)
  File "/home/SIRI/web2py/gluon/validators.py", line 497, in __init__
    (ktable, kfield) = str(field).split('.')
ValueError: too many values to unpack

I thought that using the 'IS_IN_DB' command might be messing with this, so 
I changed it to 'IS_IN_SET'. I got this error instead:

Traceback (most recent call last):
  File "/home/SIRI/web2py/gluon/restricted.py", line 217, in restricted
    exec ccode in environment
  File "/home/SIRI/web2py/applications/mqr/controllers/cms.py" 
<https://siri.pythonanywhere.com/admin/default/edit/mqr/controllers/cms.py>, 
line 478, in <module>
  File "/home/SIRI/web2py/gluon/globals.py", line 372, in <lambda>
    self._caller = lambda f: f()
  File "/home/SIRI/web2py/gluon/tools.py", line 3239, in f
    return action(*a, **b)
  File "/home/SIRI/web2py/applications/mqr/controllers/cms.py" 
<https://siri.pythonanywhere.com/admin/default/edit/mqr/controllers/cms.py>, 
line 26, in display_manage
    oncreate=coll_create,onupdate=coll_create)
  File "/home/SIRI/web2py/gluon/sqlhtml.py", line 2764, in smartgrid
    user_signature=user_signature, **kwargs)
  File "/home/SIRI/web2py/gluon/sqlhtml.py", line 2093, in grid
    update_form = SQLFORM(table, record, **sqlformargs)
  File "/home/SIRI/web2py/gluon/sqlhtml.py", line 1145, in __init__
    inp = self.widgets.options.widget(field, default)
  File "/home/SIRI/web2py/gluon/sqlhtml.py", line 270, in widget
    options = requires[0].options()
  File "/home/SIRI/web2py/gluon/validators.py", line 428, in options
    items = [(k, self.labels[i]) for (i, k) in enumerate(self.theset)]
TypeError: 'Query' object does not support indexing


Any ideas on how I could do this? I feel like it's a really simple tweak, 
but I'm just not seeing it. Any help would be fantastic.


-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to