所以我得到了一个存在重复字段的表单,它的定义如下:
class SimpleDataRow(Form):
title = StringField('Title')
label = StringField('Name')
class SimpleDataForm(Form):
fields = FieldList(FormField(SimpleDataRow))
在此之后,我初始化表单,并使用相应的数据将一些条目附加到其中:
fields = DBSession.query(Field).filter_by(app=request.currentapp).all()
form = SimpleDataForm()
for field in fields:
form.fields.append_entry(field)
然后我想将字段呈现给浏览器,但由于WTForms中的字段命名,这是我遇到麻烦的地方。在渲染字段时,会为其分配名称和ID fields-0-title
& fields-0-label
,并且对于每行数据,0增加1。
我宁愿拥有的是WTForm获取字段对象的ID,并在为字段分配名称和id时使用它。我的字段对象如下所示:
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}
答案 0 :(得分:1)
您可以在实例化表单类时提供前缀。所以在你的情况下你会做类似的事情:
form = SimpleDataForm(prefix=<your prefix string>)