I think we may have changed the validator to IS_IN_SET but you are still 
passing the same parameters as to IS_IN_DB. They take different sets of 
parameters.

On Monday, 12 October 2015 11:54:03 UTC-5, John Smidt wrote:
>
> 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