2013-04-03 36 views
4

我想使用WTForms在表格中渲染表单。这似乎是TableWidget会做的伎俩,但我能得到这个工作的唯一方法如下:如何使用WTForms的TableWidget?

from wtforms import Form, TextField, widgets 

class User(Form): 
    user = TextField('User') 
    email = TextField('Password') 

    widget = widgets.TableWidget(with_table_tag=False) 

user = User() 
print user.widget(user) 

这似乎不可思议(在print user.widget(user)部分),根据该文件,我应该能够说:

class User(Form): 
    user = TextField('User', widget=widgets.TableWidget) 
    email = TextField('Password', widget=widgets.TableWidget) 

user = User() 
for form_field in user: 
    print form_field 

然而,这将返回TypeError: __str__ returned non-string (type TableWidget)

当我更换的用户,电子邮件:

user = TextField('User') 
email = TextField('Password') 

当然,WTForms渲染按预期工作。

这是如何工作的?

回答

0

在文档它说以下有关TableWidget

呈现为一组与TH/TD对表行的字段列表。

您正在将它与单个字段而不是字段列表关联起来。如果您在代码中查找__call__方法TableWidget需要一个名为field的参数,但它会将其视为iterable以用于生成html字符串。

相关问题