В общем, задача следующая: сделать форму редактирования записей в базе. Я вообще не знаю, с какой стороны к такой штуке подходить, и пришлось изобретать велосипед… Короче, выглядит все это так:
Генерируется хтмл-таблица с содержимым базы, зовут ее view_full. К каждому entry генерируется кнопочка со ссылкой типа "http://localhost:8080/edit?bestellnr=345".
Дальше в в контроллере пишу:
@expose(template="team_ne.templates.edit")
def edit(self, **kw):
bnr = session.query(Item).filter_by(bestellnr = kw['bestellnr']).all()
bnr0 = bnr[0]
class TableFormEdit(widgets.WidgetsList):
anbieter_list = getNewList()
full_class_name = "turbogears.widgets.TableFormEdit"
iddqd = Label(label=' ID ', attrs={'size':45}, default = bnr0.iddqd)
bestellnr = TextField(label=' Bestellnr. [SAP] ', attrs={'size':45}, default = bnr0.bestellnr)
typ = SingleSelectField(label=' GF Typ ', default=bnr0.typ, options=["mono", "multi", "gradient"])
anbieter = SingleSelectField(label=' Anbieter/Carrier ', options=[(1,"s")])
for i in q: # q = маленький запросик из другой таблицы, который выдает данные для подстановки в дропдаун.
anbieter.options.append(i.anbieter_name)
anbieter.options.remove((1,"s"))
vertragsnr = TextField(label=' Vertragsnr. in OS5 ', default=bnr0.vertragsnr, attrs={'size':45})
fasern = TextField(label=' Anzahl Fasern ', default=bnr0.fasern, attrs={'size':45})
laenge = TextField(label=' L'+u'\xe4'+'nge [Km] ', default=bnr0.laenge, attrs={'size':45})
"""
...еще штук 30 таких же полей ввода.
"""
session.update(bnr0)
session.commit()
edit_widget = TableForm("TableFormEdit", fields = TableFormEdit(), action = "/view_full", text = "Submit me")
return dict(edit_widget = edit_widget)
TypeError: view_full() got an unexpected keyword argument ‘fasern’ или все другие поля, если их последовательно закомментировать.
Вообще, не оч. понятно, каким образом в view_full() передаются значения полей из маски, там вроде ничего такого и рядом нет…
Что-то я совсем запуталась…