我有一张桌子:
db.define_table('table1',
Field('name', 'string', length=16, required=True, unique=True),
Field('shape', 'string', length=12, default='star', widget=SQLFORM.widgets.radio.widget, requires=IS_IN_SET(shapes)))
我使用此SQLFORM生成表单:
form = SQLFORM(db.table1, formstyle='divs')
我有使用div的主窗体,但单选按钮,仍然使用表格,这是我想要的div中的那个。我怎么能解决这个问题?
答案 0 :(得分:2)
我认为你必须创建一个自定义小部件(参见http://web2py.com/book/default/chapter/07#Widgets)。例如:
def div_radio_widget(field, value, **attributes):
table=SQLFORM.widgets.radio.widget(field, value, **attributes)
return DIV(
*[SPAN(td.element('input'), LABEL(td.components[1]))
for td in table.elements('td')],
**table.attributes)
上面的小部件首先使用内置的单选按钮小部件创建一个表,然后从TD中提取输入元素和标签,并将所有内容放入DIV中。
在您的表定义中,只需替换:
widget=SQLFORM.widget.radio.widget
使用:
widget=div_radio_widget