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.

