更改Python表单中的字段名
我得到了一个表单,它存在一行重复的字段,定义如下:更改Python表单中的字段名,python,wtforms,Python,Wtforms,我得到了一个表单,它存在一行重复的字段,定义如下: class SimpleDataRow(Form): title = StringField('Title') label = StringField('Name') class SimpleDataForm(Form): fields = FieldList(FormField(SimpleDataRow)) class Field(Base): __tablename__ = 'sys_fields'
class SimpleDataRow(Form):
title = StringField('Title')
label = StringField('Name')
class SimpleDataForm(Form):
fields = FieldList(FormField(SimpleDataRow))
class Field(Base):
__tablename__ = 'sys_fields'
id = Column(Integer, primary_key=True)
label = Column(String(64))
title = Column(String(64))
在此之后,我初始化表单,并在表单中添加一些条目和相应的数据:
fields = DBSession.query(Field).filter_by(app=request.currentapp).all()
form = SimpleDataForm()
for field in fields:
form.fields.append_entry(field)
然后,我想将字段渲染到浏览器,但由于WTForms中的字段命名,这就是我遇到一些麻烦的地方。呈现字段时,为字段分配名称和idfields-0-title
&fields-0-label
,对于每行数据,0递增1
我更希望WTForm采用field对象的ID,并在为字段分配名称和ID时使用该ID。我的字段对象如下所示:
class SimpleDataRow(Form):
title = StringField('Title')
label = StringField('Name')
class SimpleDataForm(Form):
fields = FieldList(FormField(SimpleDataRow))
class Field(Base):
__tablename__ = 'sys_fields'
id = Column(Integer, primary_key=True)
label = Column(String(64))
title = Column(String(64))
那么,有没有办法改变WTForms在FieldList中命名字段的模式?理想情况下,我需要这样的命名模式:
{prefix}{label}{id}
在实例化表单类时,您可以提供前缀。因此,在您的情况下,您可以执行以下操作:
form = SimpleDataForm(prefix=<your prefix string>)
form=SimpleDataForm(前缀=)