如何使用Flask WTF获取QuerySelectField当前值

2024-09-29 23:27:20 发布

您现在位置:Python中文网/ 问答频道 /正文

如果使用SelectField我们可以使用obj参数从数据库中获得以表单形式预填充的当前值,就像我前面问题中的this answer。你知道吗

现在,我想使用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)

Tags: nameselfformidobjdbdefpayment

热门问题