【问题标题】:inserting variables and looping over a python class call插入变量并循环一个 python 类调用
【发布时间】:2014-06-21 01:19:16
【问题描述】:

我正在使用 flask-sqlalchemy 和 flask-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

【问题讨论】:

    标签: python class flask flask-sqlalchemy flask-wtforms


    【解决方案1】:

    你可以使用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 是我假设 you 拥有的 - 一个继承自 wtforms.Form 的类(例如 class FormList(Form))。如果form_list 是那个类,那么您只需使用instance_of_form = form_list(**data)
    • 您使用getattr(form, row.form_field.name).data = row.value 的第一种方法有效。对于您的第二种方法,data = {row.form_field.name: row.value for row in values} 似乎获取了数据,但是,instance_of_form = form_list(**data) 似乎没有传递它。模板中的所有字段均为空。
    猜你喜欢
    • 2018-11-14
    • 2020-01-06
    • 2011-08-20
    • 1970-01-01
    • 2023-01-25
    • 1970-01-01
    • 2012-12-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多