Skip to main content
 首页 » 编程设计

python之将单选按钮添加到 web2py 中的自定义表单

2025年05月04日9lexus

我正在尝试以自定义形式将字段显示为单选按钮组。我想将每个单选按钮放在表格的不同行中。问题是当我使用 {{=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 验证器采用“标签”参数,这是与集合中的选项关联的标签列表。