3

I want to do a query select field with a default value that is passed in from the route. I can't figure out how to pass a variable from the View to the Form class

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 Answers 2

10

This is from the QuerySelectField documentation:

The query property on the field can be set from within a view to assign a query per-instance to the field. If the property is not set, the query_factory callable passed to the field constructor will be called to obtain a query.

What this means is that you define your form with the query:

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

And then in your view function you assign the query once you have an instance:

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(): # ... 
Sign up to request clarification or add additional context in comments.

Comments

1

See my other answer here: https://stackoverflow.com/a/17638018/880326.

So it looks like:

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

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.