Or maybe I'll revert to boolean with IS_IN_SET(['yes','no']), but I'll have 
to do an onvalidation check so that I can assign the correct value after 
form post?

On Tuesday, April 4, 2023 at 4:33:20 PM UTC+8 Jeff Plata wrote:

> Thank you all for your suggestions. In the end, I settled for a string 
> field with IS_IN_SET(['yes', 'no']).
>
> Bootstrap toggle is nice, but the alignment is off, and the stubborn label 
> is still on the right where I don't want it to be. I know these issues are 
> fixable, but nah, I'm going for the quick way.
>
> On Wednesday, March 29, 2023 at 8:50:09 PM UTC+8 Leonel Câmara wrote:
>
>> You could make a custom widget for that field, in your define_table one 
>> of the attributes a Field can receive is widget.
>>
>> However for such a simple case it might be worth it so simply use 
>> something like: https://github.com/gitbrent/bootstrap4-toggle/
>>
>> A quarta-feira, 29 de março de 2023 à(s) 13:18:49 UTC+1, 
>> snide...@gmail.com escreveu:
>>
>>> On Wednesday, March 29, 2023 at 4:46:26 AM UTC-7 Dave S wrote:
>>>
>>> On Wednesday, March 29, 2023 at 4:10:19 AM UTC-7 Dave S wrote:
>>>
>>> On Sunday, February 26, 2023 at 5:51:30 AM UTC-8 jeff...@gmail.com 
>>> wrote:
>>>
>>> Is it possible to change the boolean field widget from checkbox to 
>>> option with yes and no? How?
>>>
>>>
>>>
>>> I don't think you can do that with the default radio widget.
>>>
>>> This works:
>>>
>>>     form3 = SQLFORM.factory(
>>>         Field('bool', type = "string", default = False, \
>>>
>>>
>>> um, that default should now be 'yes' or 'no', since the type isn't 
>>> boolean
>>>  
>>>
>>>               requires=IS_IN_SET(['yes', 'no']), \
>>>               widget = lambda field, value: 
>>>  SQLFORM.widgets.radio.widget(field, value)),
>>>         _name = "Georgeform")
>>>     if form3.process(formname = "Georgeform", dbio = False, keepvalues = 
>>> True).accepted:
>>>         response.flash = "form3 bool %s" % ("T" if form3.vars.bool == 
>>> 'yes' else 'F')
>>>     else:
>>>         response.flash = "form3 bool not set"
>>>
>>>
>>> but if you set the field type to  boolean, you always get form3.vars.bool 
>>> = True.
>>>
>>> Since I'm about to go to bed (as I said an hour ago), I'm not going to 
>>> explore custom widgets, or using the INPUT() helper  But synthesizing a 
>>> boolean from the radio set is my idea of an obvious approach.  The 
>>> caveat is that if you're using SQLFORM instead of the factory, I'm not 
>>> sure what will happen with the row posted to the table.  Again, not before 
>>> bed
>>>
>>>
>>> Ok,  I won't *try* anything before bed, but I'd probably make the table 
>>> def use a computed field for the boolean and have it not visible, and just 
>>> add the radio set  field to the table.
>>>
>>> /dps
>>>
>>>

-- 
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/web2py/f999971f-0878-4848-b704-b6176890ec56n%40googlegroups.com.

Reply via email to