我正在尝试以自定义形式将字段显示为单选按钮组。我想将每个单选按钮放在表格的不同行中。问题是当我使用 {{=form.custom.selection_type[0]}} 时,小部件被包裹在不需要的 tr 和 td 中标签。有没有办法只添加单选按钮?
我的表格:
{{extend 'layout.html'}}
{{=form.custom.begin}}
<table>
<tr>
<td> {{=form.custom.selection_type[0]}}:</td>
<td> {{=form.custom.widget.biller_list}}</td>
</tr>
<tr>
<td> {{=form.custom.widget.selection_type[1]}}:</td>
<td> {{=form.custom.widget.biller_code}}</td>
</tr>
</table>
{{=form.custom.end}}
html 源代码中发生的事情的示例:
<table>
<tr>
<td> <tr><td><input name="selection_type" type="radio" value="From my biller list" />From my biller list</td></tr>:</td>
...
</tr>
...
</table>
我的模型:
db.define_table('payment_bpay_step1',
Field('selection_type', 'list:string'),
Field('biller_list', db.biller, notnull=True),
Field('biller_code'),
Field('biller_name'))
db.payment_bpay_step1.selection_type.requires = IS_IN_SET(('From my biller list', 'Search by biller code', 'Search by biller name'))
db.payment_bpay_step1.selection_type.widget = SQLFORM.widgets.radio.widget
请您参考如下方法:
它还不稳定,但在主干中,您现在可以为单选小部件指定 ul 或 divs 样式,而不是表格样式。我认为会是:
db.payment_bpay_step1.selection_type.widget = \
lambda f, v: SQLFORM.widgets.radio.widget(f, v, style='divs')
您还可以创建自定义小部件,如 this section in the book 末尾所述.
当您说您希望“innerhtml”与单选按钮的值不同时,您是在谈论单选按钮旁边的标签吗?为此,IS_IN_SET 验证器采用“标签”参数,这是与集合中的选项关联的标签列表。
