web2py:在生成的单选按钮中使用 div 而不是表格

发布于 2024-11-08 06:58:29 字数 415 浏览 1 评论 0原文

我有一张表:

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 表单。我该如何解决这个问题?

I have a table:

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

I use this SQLFORM to generate the form:

form = SQLFORM(db.table1, formstyle='divs')

I have the main form using divs, but the radio buttons, still use tables, which is really the one I want in divs. How can can I fix this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

情定在深秋 2024-11-15 06:58:30

我认为您必须创建一个自定义小部件(请参阅 http://web2py.com/书/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

I think you'll have to create a custom widget (see http://web2py.com/book/default/chapter/07#Widgets). For example:

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)

The above widget first creates a table using the built-in radio button widget and then pulls out the input elements and labels from the TD's and puts everything in a DIV.

In your table definition, just replace:

widget=SQLFORM.widget.radio.widget

with:

widget=div_radio_widget
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文