更改 Python WTForms 中的字段名称

Change field names in 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}

你可以在实例化表单时给一个前缀class。所以在你的情况下你会做这样的事情:

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