It's just a typo -- db.color.gr and db.color.id should be db.colors.gr and 
db.colors.id.
 
Anthony

On Monday, June 27, 2011 4:35:01 PM UTC-4, mweissen wrote:

> Hi Massimo, 
> looks great. But I got: 
>
>   web2py™ Version 1.97.1 (2011-06-26 19:25:44) Python Python 2.5.4: 
> C:\Web2Py\web2py_win\web2py\web2py.exe TRACEBACK 
>   
> 1.
> 2.
> 3.
> 4.
> 5.
> 6.
> 7.
> 8.
> 9.
>
> Traceback (most recent call last):
>
>
>   File "gluon/restricted.py", line 192, in restricted
>
>
>   File 
> "C:/Web2Py/web2py_win/web2py/applications/test16rechte/controllers/default.py"
>  
> <http://127.0.0.1:8000/admin/default/edit/test16rechte/controllers/default.py>,
>  line 88, in <module>
>
>
>   File "gluon/globals.py", line 137, in <lambda>
>
>
>   File 
> "C:/Web2Py/web2py_win/web2py/applications/test16rechte/controllers/default.py"
>  
> <http://127.0.0.1:8000/admin/default/edit/test16rechte/controllers/default.py>,
>  line 84, in newperson
>
>
>   File "gluon/dal.py", line 4255, in __getattr__
>
>
>   File "gluon/dal.py", line 4249, in __getitem__
>
>
> KeyError: 'color'
>
>  ERROR SNAPSHOT [image: help] 
>
> <type 'exceptions.KeyError'>('color')
>
> 2011/6/27 Massimo Di Pierro <[email protected]>
>
>> yes
>>
>> db.person.color.requires=IS_IN_DB(db(db.color.gr=='A'),db.color.id,'%
>> (color)s')
>> form=SQLFORM(db.person)
>>  
>> On Jun 27, 3:12 pm, Martin Weissenboeck <[email protected]> wrote:
>> > Hi,
>> > I need a SQLFORM with a special drop-box with a subset of values.
>> >
>> > This is a simplified example, the whole problem is a little bit more
>> > complex: Let's make two tables:
>> >
>> > db.define_table('colors',
>> >     Field('color'),
>> >     Field('gr'),  # group
>> >     format='%(color)s',
>> >     )
>> >
>> > db.define_table('person',
>> >     Field('name'),
>> >     Field('color','list:reference colors'),
>> >     )
>> >
>> > I fill the first table:
>> >
>> > def newcolors():
>> >     db.colors.truncate()
>> >     db.colors.bulk_insert([
>> >         {'color':'yellow', 'gr':'B'},
>> >         {'color':'green', 'gr':'A'},
>> >         {'color':'blue', 'gr':'A'},
>> >         {'color':'red', 'gr':'B'},
>> >         {'color':'white', 'gr':'B'},
>> >         {'color':'black', 'gr':'B'},
>> >         ])
>> >
>> > And now there is the SQLFORM for a new person:
>> >
>> > def newperson():
>> >     form=SQLFORM(db.person)
>> >     return dict(form=form)
>> >
>> > The form contains a SELECT/OPTION multiple drop-box for the colors 
>> *black to
>> > yellow.*
>> >
>> > My question: is it possible to have three different forms
>> >
>> >    - a drop-box which contains only the colors of group A (green, blue)
>> >    - a drop-box which contains only the colors of group B (yellow, red,
>> >    white, black)
>> >    - a drop-box with all color
>> >
>> > Something like
>> >
>> > form=SQLFORM(db.person, colors_for_select=[1,2])
>> >
>> > Regards,
>> > Martin
>>
>
>
>
>
>

Reply via email to