web2py: использовать div в сгенерированном переключателе вместо таблицы - PullRequest
1 голос
/ 18 мая 2011

У меня есть таблица:

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, но переключатели все еще используюттаблицы, которая действительно та, которую я хочу в divs.Как я могу это исправить?

1 Ответ

2 голосов
/ 19 мая 2011

Я думаю, вам придется создать собственный виджет (см. 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
...