【问题标题】:How to get QuerySelectField current value with Flask WTF如何使用 Flask WTF 获取 QuerySelectField 当前值
【发布时间】:2023-04-02 18:14:01
【问题描述】:

如果使用 SelectField,我们可以使用 obj 参数从数据库中获取预先填充到表单中的当前值,例如我上一个问题中的this answer。 p>

现在,我想使用 QuerySelectField 获取当前值。

这是我的代码的 sn-p:

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 值..?

编辑

这是我的模型的 sn-p:

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)

【问题讨论】:

  • 当你将 course 变量作为 obj 传递时,它的值是多少?
  • 啊抱歉,我忘记了,我已经编辑了我的问题。

标签: python flask jinja2 flask-wtforms wtforms


【解决方案1】:

我通过关注这个伟大的answer 来解决这个问题。

【讨论】:

  • 这个答案是关于为 QuerySelectField 设置一个默认值。您是如何将选定的值保存到您的数据库的?
猜你喜欢
  • 1970-01-01
  • 2015-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-09-27
  • 2014-10-08
  • 2017-05-14
  • 2014-11-18
相关资源
最近更新 更多