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.

Reply via email to