thanks a lot Anthony you solved the "problem" web2py +++ as usual
Le jeudi 12 novembre 2015 00:53:30 UTC+1, Anthony a écrit : > > On Wednesday, November 11, 2015 at 4:40:17 PM UTC-5, Pierre wrote: >> >> items = db().select(db.c_sub.ALL) >> form = SQLFORM.factory(*[Field(item.name, type='boolean', >> default=False, comment=item.c_main.name) for item in items]) >> > > The IS_SLUG validation of values you are inserting into the db.c_sub table > is working as expected. The problem is that you are attempting to create a > form where the slug values become the names of the form fields. When using > SQLFORM.factory to create a form, you must use the Field() constructor, but > the "name" argument of Field() must be a valid Python identifier (so, > hyphens are not allowed). > > If you are OK with using underscores in place of hyphens, you could do > something like: > > Field(item.name.replace('-', '_'), label=item.name, ...) > > That will display the item.name as the label on the form but replace > hyphens with underscores in the actual input element names. Alternatively, > you could drop the "label" argument, in which case you'll get the default > labels, which replace the underscores with spaces. > > Alternatively, you could store the slugs themselves with underscores > rather than hyphens, either by implementing a custom validator or using > something like: > > Field('name', requires=[CLEANUP(r'-'), IS_SLUG(check=True, > keep_underscores=True), IS_LOWER()]) > > Note, the above will allow submitted values with hyphens, but it will > remove the hyphens. It will then check to make sure the string includes no > special characters except underscores. > > Finally, you could use the FORM helper instead of SQLFORM.factory to > generate the form, as that will allow any names you want for the INPUT > elements. > > Anthony > -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- 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 web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.