Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
更改Python表单中的字段名_Python_Wtforms - Fatal编程技术网

更改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中的字段命名,这就是我遇到一些麻烦的地方。呈现字段时,为字段分配名称和id
fields-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(前缀=)