Форумы сайта python.su
Вы не зашли.
Дорогие товарищи, я к вам опять со своими проблемами, спасайте :-)
Вот у меня есть виджет из стандартной поставки:
class TableFormDesc(widgets.WidgetsList):
name = "Table Form"
full_class_name = "turbogears.widgets.TableForm"
_id = TextField('ID')
_bestellnr = TextField('Bestellnr')
_typ = TextField('GF Typ')
и т. д.На выходе из него получается форма:
Собсно, вопросы:
- почему перевирается сase? Где можно исправить, чтобы заголовки к полям назывались нормально "ID", "GF Typ" и т. д., а не "первая - заглавная, а все остальные - строчные"?
- можно как-то заголовки выровнять по правому краю? А то позорище такое внатуре :-(
- ну и заодно настроить cellpadding и пр. свойства таблицы...
Наверное, на все вопросы есть один ответ, но я его пока не нашла :-(
Спасибо заранее!
апд.: cellpadding нашла, остальное все равно актуально :-/
Отредактированно hildi (2008-11-06 18:57:18)
Неактивен
hildi написал:
- почему перевирается сase? Где можно исправить, чтобы заголовки к полям назывались нормально "ID", "GF Typ" и т. д., а не "первая - заглавная, а все остальные - строчные"?
class TableFormDesc(widgets.WidgetsList):
name = "Table Form"
full_class_name = "turbogears.widgets.TableForm"
id = TextField(label='ID')
bestellnr = TextField(label='Bestellnr')
typ = TextField(label='GF Typ')hildi написал:
- можно как-то заголовки выровнять по правому краю? А то позорище такое внатуре :-(
- ну и заодно настроить cellpadding и пр. свойства таблицы...
Можете использовать css, все поля помечены классами, для формы можно передать класс через form_attrs. Можете использовать свой шаблон, передав его в форму:
my_form = Form(fields=TableFormDesc, template="ваш шаблон")в шаблоне к полям поля можно обращаться по именам через field_for
Неактивен
Cпасибо, все получилось!
апд.
Не, ни фига не получилось. А как из контроллера обратиться теперь к этим полям?
Раньше я так делала (подозреваю, что неправильно, но тонкая философия ТГ мне не дается в упор :-))
@expose(template="team_ne.templates.save")
def save(self, **kw):
Session = sessionmaker()
session = Session()
newitem = Item()
newitem.iddqd = kw['ID']
newitem.bestellnr = kw['Bestellnr']
newitem.typ = kw['GF Typ']
и т. д.А с указанием лейблов в качестве параметра TextField халява кончилась. Что делать?
Отредактированно hildi (2008-11-07 13:17:17)
Неактивен
hildi написал:
А с указанием лейблов в качестве параметра TextField халява кончилась. Что делать?
а причем тут лейблы? поля вам будут доступны по именам:
newitem.iddqd = kw['id']
newitem.bestellnr = kw['bestellnr']
newitem.typ = kw['typ']Когда вы описываете поля через WidgetsList
class TableFormDesc(widgets.WidgetsList):
id = TextField(label='ID')
bestellnr = TextField(label='Bestellnr')
typ = TextField(label='GF Typ')получаете немного магии, имена аттрибутов класса id, bestellnr, typ становятся еще и именами соответствующих полей.
если не верите поставте в методе контролера print kw
ЗЫ: думаю следующий ваш вопрос будет про @validate и @error_handler ![]()
Неактивен
Я верю! Тем более, что все действительно работает! :-)
PooH написал:
думаю следующий ваш вопрос будет про @validate и @error_handler
Будет, но не следующий :-) Обработку ошибок я только что начала и еще не пришла в отчаяние :-)
А следующий вопрос будет такой: у меня получилась длиннющая форма ввода аж на 36 полей. Ее можно как-то разделить на две части, чтобы разместить их горизонтально? Или это надо делать две формы и вешать событие "submit" на общую кнопку? (интересно, это вообще возможно с готовым виджетом?)
Неактивен
hildi написал:
А следующий вопрос будет такой: у меня получилась длиннющая форма ввода аж на 36 полей. Ее можно как-то разделить на две части, чтобы разместить их горизонтально? Или это надо делать две формы и вешать событие "submit" на общую кнопку? (интересно, это вообще возможно с готовым виджетом?)
Сделайте свой шаблон для этой формы.
Неактивен