I did requires=IS_IN_DB(db, db.tiers.type, '%(type)s')

On Sunday, October 7, 2012 1:57:06 PM UTC-7, Niphlod wrote:
>
> that's because web2py doesn't know what you expect to be filled in your 
> model. If you add the requires= bit to your "type" field, then 
> automatically web2py will turn that field into a SELECT with the correct 
> options. 
>
> On Sunday, October 7, 2012 9:01:48 PM UTC+2, dave wrote:
>>
>> ok I got it to display using select() 
>>
>> SELECT(_type='text', _name='test0',  requires=IS_IN_DB(db, db.tiers.type, 
>> '%(type)s'))) 
>>
>> now the problem is it wont populate the options of the dropdown box from 
>> the database, my tiers database is defined like
>>
>> db.define_table('tiers', 
>>             Field('type'))
>>
>>
>> On Sunday, October 7, 2012 7:33:54 AM UTC-7, Anthony wrote:
>>>
>>> There are two separate issues -- the validation of the submitted values, 
>>> and the widget displayed in the form to input the values. In your case, the 
>>> validation should still work, but you won't get the widget because the 
>>> widget is added by the SQLFORM __init__ method, which is called before you 
>>> add the additional field. If you want a dropdown, you'll have to insert a 
>>> SELECT() element instead of an INPUT() element.
>>>
>>> Anthony
>>>
>>> On Sunday, October 7, 2012 5:44:48 AM UTC-4, dave wrote:
>>>>
>>>> I have the following code
>>>>
>>>> def test():  # gets fired for first page load, it loads the filter 
>>>> applicants form on the left side
>>>>     form = SQLFORM(db.auth_user, request.args(0), buttons=[],separator 
>>>> = ' ', formstyle = 'divs', deletable=True, fields = ['test1', 'test2', 
>>>> 'test3'], upload=URL(r=request, f='download'), showid = False)
>>>>     
>>>>     # this line of code adds a test dropdown box to the filter 
>>>> applicants form, because it is not part of the auth_user field, it needs 
>>>> to 
>>>> be added separately
>>>>     test0 = TR(LABEL('test 0'), 
>>>>                       INPUT(_type='text', _name='test0', requires=
>>>> IS_IN_DB(db, db.tiers.type)))
>>>>     form[0].insert(1,test0) # 1 is the position where it will be added
>>>>     # end of inserting code
>>>>
>>>> the problem is the input box wont show a dropdown box as expected, it 
>>>> only shows a blank text box, is it a bug or am I missing something
>>>>
>>>

-- 



Reply via email to