将变量传递给Flask WTForm

时间:2013-07-31 20:33:45

标签: python flask flask-wtforms

我想使用从路由传入的默认值来执行查询选择字段。我无法弄清楚如何将视图中的变量传递给Form类

class transactionsForm(Form):

loan_id = QuerySelectField('trans_id', validators=[Required()], get_label='name',
                           query_factory=lambda: trans.query.filter_by(trans_id=[MY VARIABLE]).all())

2 个答案:

答案 0 :(得分:7)

这来自QuerySelectField文档:

  

可以在视图中设置字段上的查询属性,以便为字段分配每个实例的查询。如果未设置该属性,则将调用传递给字段构造函数的query_factory callable以获取查询。

这意味着您使用查询定义表单:

class transactionsForm(Form):
    loan_id = QuerySelectField('trans_id', validators=[Required()], get_label='name')

然后在您的视图函数中,一旦有了实例,就可以分配查询:

def viewFunction(my_variable):
    form = transactionsForm()
    my_query = trans.query.filter_by(trans_id=my_variable)
    form.loan_id.query = my_query
    if form.validate_on_submit():
        # ...

答案 1 :(得分:0)

请参阅我的另一个问题:https://stackoverflow.com/a/17638018/880326

所以它看起来像:

form = transactionsForm(request.form, loan_id='default')