Thank you all for your help.

I was able to resolve the problem quirky as it may be but here we go.
For science!!!

To get a type='list:string' to fail validation if none passed from
your SQLFORM.factory form:

1) Used an onvalidation=... in my form.accepts(...) /
process(...).accepted / validate(...)

Within the validation function:

if not request.vars.choochoo:
    form.errors.choochoo = "Please select 1 or more witches before
burning them."

form.errors.fieldname <--- Unless the fieldname
matched .errors.fieldname, flashing form.errors.fieldname wouldn't
work.

To reiterate more simply, Field('choochoo'...) had to match
form.errors.choochoo in order to have
form = SQLFORM.factory(...)
if form.validate(...):
    do something
elif form.errors.choochoo:
    response.flash = form.errors.choochoo

^^^^work when set from my onvalidation function


2)  IS_NOT_EMPTY() constraint added after form = SQLFORM.factory(...)

form.element('#no_table_myawesomeselect')
['requires']=IS_NOT_EMPTY(error_message='Please select 1 or more
witches before burning them.')

It wouldn't work when added to requires= in the Field(...) of my form
= definition but only when added after form is created but before
processing.



Now my errors flash from response as they should according to the
onvalidation function that's called.

Thanks again web2py community, you're wonderful as always.

David





On Oct 23, 11:21 pm, ニコノコ <nikolai...@gmail.com> wrote:
> Eeugh. Sorry for the ugly suggestion. Post validation could
>
> def person_processing(form):
>
> if len(form.vars.field or '')<1:
>         form.errors.field= 'Select one.'
>
> On Oct 24, 10:32 am, Vasile Ermicioi <elff...@gmail.com> wrote:
>
> > > How about:  db.table.field.requires = IS_LENGTH(1)
>
> > that will limit the field to one character, not to one value from set
>
>

Reply via email to