插入变量并在python类调用上循环
我用的是烧瓶炼金术和烧瓶wtf。基本上,我希望获取“row.form_field”查询生成的字符串,并将其放入wtf表单类调用中。你有什么办法让我成功吗插入变量并在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
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)
似乎没有传递它。模板中的所有字段均为空。