在web2py中将自定义按钮添加到自定义表单

时间:2011-09-17 16:00:09

标签: python web2py

我正在尝试以自定义形式将字段显示为单选按钮组。我想将每个单选按钮放在表格的不同行上。问题是当我使用{{=form.custom.selection_type[0]}}时,小部件包含在不需要的trtd标记中。有没有办法只添加单选按钮?

我的表格:

{{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

1 个答案:

答案 0 :(得分:1)

它还没有稳定,但在trunk中,您现在可以为无线电小部件指定ul或div样式而不是表格样式。我想会是:

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验证器采用'labels'参数,该参数是与集合中的选项关联的标签列表。