插入变量并在python类调用上循环

插入变量并在python类调用上循环,python,class,flask,flask-sqlalchemy,flask-wtforms,Python,Class,Flask,Flask Sqlalchemy,Flask Wtforms,我用的是烧瓶炼金术和烧瓶wtf。基本上,我希望获取“row.form_field”查询生成的字符串,并将其放入wtf表单类调用中。你有什么办法让我成功吗 from forms import form_list from models import form_value form = form_list values = form_value.query.filter_by(form_entry_id = id) for row in values: print row.form_fie

我用的是烧瓶炼金术和烧瓶wtf。基本上,我希望获取“row.form_field”查询生成的字符串,并将其放入wtf表单类调用中。你有什么办法让我成功吗

from forms import form_list
from models import form_value

form = form_list

values = form_value.query.filter_by(form_entry_id = id)
for row in values:
   print row.form_field, row.value #This works.
   form.row.form_field.data = row.value #This does not!
   # form.???how to insert "row.form_field" here???.data = row.value

您可以使用
getattr

getattr(form, row.form_field).data = row.value
但更简单的是,您只需将数据传递到实例化的WTForms类:

data = {row.form_field: row.value for row in values}
form_list = FormList(**data)

天才!你的第一个回答让我很惊讶!对于你的第二个答案,我不熟悉FormList。有这方面的文档吗?@user1181157-
FormList
是我假设您拥有的-
wtforms.Form
继承的类(例如
类FormList(Form)
)。如果
form\u list
是该类,那么您只需使用
instance\u of\u form=form\u list(**data)
。使用
getattr(form,row.form\u field.name)。data=row.value
的第一个方法有效。对于第二种方法,
data={row.form\u field.name:row.value For row in values}
似乎获取了数据,但是,
instance\u of_form=form\u list(**data)
似乎没有传递它。模板中的所有字段均为空。