Thanks a lot Anthony for  your help. 

I am facing problem while using the variable name with the isinstance 
method.

i.e. isinstance(db.person.gender.requires, IS_IN_SET) returns TRUE

But If I use it like :

field = db.person.gender
isinstance(field.requires, IS_IN_SET)   ==> Exception that string has no 
attribute requires.

Since my code is iterating over all the fields and doing some other 
operations, I have to store field in variable.

Is there any way I can convert string back to gluon object ?

Thanks
Sarbjit

On Friday, July 26, 2013 5:30:52 PM UTC+5:30, Anthony wrote:
>
> You can do:
>
> if hasattr(field.requires, 'options'):
>
> which will identify IS_IN_SET and IS_IN_DB validators. If you only want to 
> identify IS_IN_SET, you can do:
>
> if isinstance(field.requires, IS_IN_SET):
>
> To get the list of options, you can do field.requires.theset (for the 
> values), field.requires.labels (for the labels), or 
> field.requires.options() for a list of tuples of values and labels.
>
> You can also create a SELECT object via SQLFORM.widgets.options.widget(field, 
> value=field.default).
>
> Anthony
>
> On Friday, July 26, 2013 4:55:41 AM UTC-4, Sarbjit singh wrote:
>>
>> Actually I am not using the SQLFORM. I am using the code for dynamic 
>> search form from (
>> http://www.web2pyslices.com/slice/show/1403/dynamic-search). I want to 
>> modify the code such that for the fields with validators, it should show 
>> the selection menu. So I want to add  a check in the code below to detect 
>> if a field is having validator set, then use the SELECT command with the 
>> validator set values as argument. So far, I am not able to achieve it.
>>
>> Can you please recommend something in context here?
>>
>> Here is the code from the slice :
>>
>> def dynamic_search(table):
>>     tbl = TABLE()
>>     selected = []
>>     ops = ['equals','not equal','greater than','less than',
>>            'starts with','ends with','contains']
>>     query = table.id > 0    
>>     for field in table.fields:
>>         chkval = request.vars.get('chk'+field,None)
>>         txtval = request.vars.get('txt'+field,None)
>>         opval = request.vars.get('op'+field,None)
>>         row = TR(TD(INPUT(_type="checkbox",_name="chk"+field,
>>                           value=chkval=='on')),
>>                  TD(field),TD(SELECT(ops,_name="op"+field,
>>                                      value=opval)),
>>                  TD(INPUT(_type="text",_name="txt"+field,
>>                           _value=txtval)))
>>         tbl.append(row)
>>         if chkval:
>>             if txtval:
>>                 query &= build_query(table[field], 
>>                                 opval,txtval)
>>             selected.append(table[field])           
>>     form = FORM(tbl,INPUT(_type="submit"))
>>     results = db(query).select(*selected)
>>     return form, results
>>
>> Thanks,
>> Sarbjit
>>
>>
>>
>> On Friday, July 26, 2013 1:37:26 PM UTC+5:30, Massimo Di Pierro wrote:
>>>
>>> Exactly. Complete code in case you have errors:
>>>
>>> #model
>>> db.define_table('persons',Field('gender'))
>>> db.persons.gender.requires = IS_IN_SET(['Male', 'Female'])
>>>
>>> #controller default.py
>>> def index():
>>>     form = SQLFORM(db.persons).process()
>>>     return locals()
>>>
>>> #views default/index.html
>>> {{extend 'layout.html'}}
>>> {{=form}}
>>>
>>>
>>> Mind we tend to call table names with singular not plural (person, not 
>>> persons). This will make your code more readable.
>>>
>>> On Friday, 26 July 2013 02:57:21 UTC-5, viniciusban wrote:
>>>>
>>>> It's done automaticaly by web2py. 
>>>>
>>>> On Fri, Jul 26, 2013 at 2:29 AM, Sarbjit singh <[email protected]> 
>>>> wrote: 
>>>> > I have a db where I have set validator IS_IN_SET on a particular 
>>>> field. I am 
>>>> > generating table rows (to be used as form), so I need to check if a 
>>>> > particular field is having IS_IN_SET validator set and I want to 
>>>> retrieve 
>>>> > the set values. Reason I want to do this is that I am generating a 
>>>> dynamic 
>>>> > form based on the table fields and for the fields having IS_IN_SET 
>>>> validtor, 
>>>> > I want to show the "Drop Down" menu rather than Text Field and wants 
>>>> to 
>>>> > populate it with the Validator values. 
>>>> > 
>>>> > db.define_table('persons',Field('gender') 
>>>> > db.persons.gender.requires = IS_IN_SET(['Male', 'Female']) 
>>>> > 
>>>> > -Sarbjit 
>>>> > 
>>>> > -- 
>>>> > 
>>>> > --- 
>>>> > 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 [email protected]. 
>>>> > For more options, visit https://groups.google.com/groups/opt_out. 
>>>> > 
>>>> > 
>>>>
>>>

-- 

--- 
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 [email protected].
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to