如何使用 Flask WTF 获取 QuerySelectField 当前值
How to get QuerySelectField current value with Flask WTF
如果使用 SelectField 我们可以使用 obj
参数从数据库中获取预填充到表单中的当前值,例如 关于我之前的问题。
现在,我想使用 QuerySelectField
获取当前值。
这是我的代码片段:
def course_list():
return Course.query.all()
class PaymentForm(Form):
total_price = IntegerField(validators=[required()])
course_name = QuerySelectField('Course name', validators=[required()], query_factory=course_list)
# ....
# ....
这是路线。
@app.route('/edit_payment/<int:payment_id>', methods=['GET', 'POST'])
def edit_payment(payment_id):
payment = Pament.query.filter_by(id=payment_id).first()
course = db.session.query(Course.name).filter_by(id=payment.course_id).first()
payment_form = PaymentForm(obj=course) # here I try to use the obj argument.
# ... validate on submit
# ....
# ....
return render_template(payment=payment, payment_form=payment_form)
在我调用 PaymentForm
的路由上,我尝试解析 obj
参数,但似乎它没有预先填充值来自 db.
的当前用户
这是我在 Jinja2 模板上的调用方式:
{{ f.render_field(payment_form.course_name, value=payment.name) }}
所以,我的问题是,如何根据数据库中的当前用户值获取 QuerySelectField
值..?
编辑:
这是我的模型的片段:
class Payment(db.Model):
__tablename__ = 'payment'
id = db.Column(db.Integer, primary_key=True)
course = db.relationship('Course', backref=db.backref('payment', lazy='dynamic'))
# ...
# ...
def __init__(self, course):
self.course = course
class Course(db.Model):
__tablename__ = 'course'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(100), unique=True)
# ...
# ...
def __init__(self, name):
self.name = name
而且我还尝试像这样在 obj
上传递值:
payment = Pament.query.filter_by(id=payment_id).first()
payment_form = PaymentForm(obj=payment)
我通过关注这个伟大的 answer.
弄明白了这一点
如果使用 SelectField 我们可以使用 obj
参数从数据库中获取预填充到表单中的当前值,例如
现在,我想使用 QuerySelectField
获取当前值。
这是我的代码片段:
def course_list():
return Course.query.all()
class PaymentForm(Form):
total_price = IntegerField(validators=[required()])
course_name = QuerySelectField('Course name', validators=[required()], query_factory=course_list)
# ....
# ....
这是路线。
@app.route('/edit_payment/<int:payment_id>', methods=['GET', 'POST'])
def edit_payment(payment_id):
payment = Pament.query.filter_by(id=payment_id).first()
course = db.session.query(Course.name).filter_by(id=payment.course_id).first()
payment_form = PaymentForm(obj=course) # here I try to use the obj argument.
# ... validate on submit
# ....
# ....
return render_template(payment=payment, payment_form=payment_form)
在我调用 PaymentForm
的路由上,我尝试解析 obj
参数,但似乎它没有预先填充值来自 db.
这是我在 Jinja2 模板上的调用方式:
{{ f.render_field(payment_form.course_name, value=payment.name) }}
所以,我的问题是,如何根据数据库中的当前用户值获取 QuerySelectField
值..?
编辑:
这是我的模型的片段:
class Payment(db.Model):
__tablename__ = 'payment'
id = db.Column(db.Integer, primary_key=True)
course = db.relationship('Course', backref=db.backref('payment', lazy='dynamic'))
# ...
# ...
def __init__(self, course):
self.course = course
class Course(db.Model):
__tablename__ = 'course'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(100), unique=True)
# ...
# ...
def __init__(self, name):
self.name = name
而且我还尝试像这样在 obj
上传递值:
payment = Pament.query.filter_by(id=payment_id).first()
payment_form = PaymentForm(obj=payment)
我通过关注这个伟大的 answer.
弄明白了这一点