在Python WTForms中更改字段名称

时间:2015-09-30 13:19:40

标签: python wtforms

所以我得到了一个存在重复字段的表单,它的定义如下:

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}

1 个答案:

答案 0 :(得分:1)

您可以在实例化表单类时提供前缀。所以在你的情况下你会做类似的事情:

form = SimpleDataForm(prefix=<your prefix string>)