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, 
> [email protected] 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 [email protected] 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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/web2py/aaee5a74-10a7-425d-b091-d4ded624270dn%40googlegroups.com.

Reply via email to