Limit string length in DAL

41 views
Skip to first unread message

billy...@gmail.com

unread,
Aug 20, 2016, 10:21:22 PM8/20/16
to web2py-users
How we limit string length in DAL? It seems length = 64 doesn't work. 

Niphlod

unread,
Aug 22, 2016, 7:49:42 AM8/22/16
to web2py-users
requires=IS_LENGTH(64) will limit insertion upon validation. the "length" attribute gets translated, wherever possibile, to backend-specific syntaxes.

Ron Chatterjee

unread,
Aug 22, 2016, 10:54:08 AM8/22/16
to web2py-users
Two question, if you don't mind.

(1) requires = IS_NOT_EMPTY(IS_LENGTH(64)) Or requires = IS_EMPTY_OR(IS_LENGTH(64)) Doesn't work. In other words, if I want to limit the string field entry but also want requires not empty, how to go about it?

(2) for my sql, do I still need length = 64 (or 255 etc)? Its redundant when I define IS_LENGTH(64) or do I need both?

Ron Chatterjee

unread,
Aug 22, 2016, 11:54:29 AM8/22/16
to web2py-users
In other words, if I do this: 

IS_EMPTY_OR(IS_LENGTH(8))

It prevents longer length string but the empty field is inserted as None. I want to prevent both.

Niphlod

unread,
Aug 22, 2016, 4:06:03 PM8/22/16
to web2py-users
to my knowledge, the general rule for validators is that if you have multiple requirements, you should pass a list.
That being said, the are "special" validator, like IS_EMPTY_OR, that take a validator as an argument.

Goes without saying (it quite translates well), that IS_EMPTY_OR(IS_LENGTH(8)) EITHER accepts nothing or a string shorter than 8 chars.
Now, the "deal". How would you consider a field in a form that is not filled ? None or '' ?

IS_NOT_EMPTY() prevents an empty input.

it's not clear what you want, but I guess something got cleared with my previous comments.
Also, validators ONLY apply when you use them: forms, validate_and_insert(), validate_and_update(), etc. Using validators only is perfectly fine if you let the app validate each and every input.
length=123 enforces the underlying column to be of that length, but if you want meaningful errors, you need to use validators anyways.  

Ron Chatterjee

unread,
Aug 22, 2016, 5:11:17 PM8/22/16
to web...@googlegroups.com
What I want is allowing user to put limited string but they can't submit the form with an empty field. 

requires = IS_EMPTY_OR([IS_LENGTH(8), IS_NOT_EMPTY()] )

That don't work. Obviously not because its conflicting. Right? In one hand I am saying empty or insert value (8) and then saying can't be empty. Do we have any other validators that I can try which takes those two arguments?

Ron Chatterjee

unread,
Aug 22, 2016, 7:12:50 PM8/22/16
to web2py-users
Its all good. Just checking. Thanks for the help Niphlod.

Ron Chatterjee

unread,
Aug 23, 2016, 11:10:50 AM8/23/16
to web2py-users
Ha! 

requires=[IS_NOT_EMPTY(), IS_LENGTH(64)]

And it works like a champ!
Reply all
Reply to author
Forward
0 new messages