Your setup seems to work for me. "value not allowed" would happen if you don't select a last name from the drop box. Are the values in the drop box OK? What is in last_names? Which web2py version?
Denes. On Mar 2, 1:46 pm, "[email protected]" <[email protected]> wrote: > I have a form with a string field that uses the IS_IN_SET validator. > The set of strings that is allowed must be generated dynamically each > time the form is generated. So I add the validator in the controller. > ( See the snippet below. ) > > The problem is that sometimes I get "value not allowed" validation > errors from that field. Why? I am restricted to selecting only the > items in the list given to IS_IN_SE. It seems like it would be > impossible to select a value that is not allowed. > > Maybe adding the validator in the controller is not correct but I > don't know what is the correct way! > > Here is a snippet showing the controller and also the table definition > from the db.py file. (I stripped out the code for other fields just to > make the snippet shorter. ) > > Thanks in advance! > > ======================= > controller > ======================= > > def register_user_custom_form(): > > # Dynamically get the list of valid last names > last_names = get_last_names( ) # Call some function to get the > list > # Set the validator based on that > db.reg_test.last_name.requires = IS_IN_SET( last_names, zero = > "Select a Last Name" ) > > form=SQLFORM(db.reg_test) > if form.accepts(request.vars,session): > response.flash='Your account has been created' > elif form.errors: > response.flash='Your account has not been created' > > ### and get a list of all users > records=SQLTABLE(db().select(db.reg_test.ALL)) > return dict(form=form,records=records) > > ================= > table definition > ================= > > db.define_table('reg_test', > Field('first_name',required=True,notnull=True,writable=True, > label="First Name"), > Field('last_name',required=True,notnull=True,writable=True, label= > "Last Name"), > ) > db.reg_test.first_name.requires = IS_NOT_EMPTY() -- You received this message because you are subscribed to the Google Groups "web2py-users" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/web2py?hl=en.

