Thanks good point about just modifying the db field directly to add pipe characters if migrating from string to list:string. I think in that case I will make my field a string field and migrate later if necessary.
On Tuesday, January 14, 2014 9:48:53 AM UTC-5, Anthony wrote: > > On Tuesday, January 14, 2014 1:18:11 AM UTC-5, User wrote: >> >> So I tested the migration feature and string to list:string doesn't >> work. So we are left with the fact that a list:string field with IS_IN_SET >> multiple=False will not select the current value in an SQLFORM. >> >> Seems kind of like a bug to me, does anyone else think so? >> > > I wouldn't call it a bug. It's somewhat of an odd use case. Using > IS_IN_SET with multiple=False gives you a non-multiple SELECT widget. Such > a widget can have only a single option selected, so the web2py SELECT > helper checks to see if the current value of the field is the same as any > of the OPTION values. Because the current value of the list:string field is > a list (and not an individual string), it will not match the value of any > option values. > > Instead, you can just switch to a string field, and if you ever need to > migrate, just wrap each string in pipe characters (i.e., "|thestring|"). > > Another option is to create a custom widget: > > Field('myfield', 'list:string', requires=IS_IN_SET(...), widget=mywidget) > > Finally, you can do: > > Field('myfield', 'list:string', requires=IS_IN_SET(..., multiple=(1, 1)), > comment='Please select only one.') > > The above will show a multiple select box instead of a single-select > drop-down, but it will require the user to select exactly one option (will > return an error message otherwise). > > 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/groups/opt_out.