Basically I reverse engineered the HTML generated from web2py and
came with the following solution:
In SQLFORM.factory I have this definition:
Field('*primary_email_choice*', widget=SQLFORM.widgets.radio.widget,
requires=IS_IN_SET({'Work' : 'Work', '*Home*' : 'Home'})),
So in the HTML id="*primary_email_choiceHome*" is a combination of
*primary_email_choice* and one of the values in the set: *Home.*
So I manually composed to HTML to have more control. I have the
value in primary_email which determines if the radio check box is checked
or not dynamically when the HTML is rendered. It is much more cleared that
way and I have a full control on the design:
{{ if fields['primary_email'] == "Home": }}
<input type="radio"
name="primary_email_choice" id="*primary_email_choiceHome*" value="Home"
checked="yes"/>
{{ else: }}
<input type="radio"
name="primary_email_choice" id="primary_email_choiceHome" value="Home" />
{{ pass }}
<label for="primary_email_choiceHome">{{ if
fields['primary_email'] == "Home": }}Primary Email: Home{{ else: }}Choose
Email Home as Primary Email{{ pass }}</label>
Radio check-boxes are under-described in the book and I believe this
solution will help others to do the same.