I am testing with the same version (1.75.4) but I can not reproduce the problem. Are you using sqllite? Have you done any migrations or changes that would do one? If yes, try recreating the table.
Or it might be something that is not shown in the trimmed down example. On Mar 2, 3:58 pm, "[email protected]" <[email protected]> wrote: > On Mar 2, 3:49 pm, DenesL <[email protected]> wrote: > > > Your setup seems to work for me. > > Thanks for trying it. > > > "value not allowed" would happen if you don't select a last name from > > the drop box. > > I definitely do. > > > Are the values in the drop box OK? > > Yes, they look OK. > > > What is in last_names? > > Just a simple Python list. > > > Which web2py version? > > 1.75.4 > > > > > 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.

