预选 selectField 的 flask-wtforms 更新对象不起作用

flask-wtforms update object with preselection of selectField not working

我正在尝试更新一个对象,它工作正常,除了我的带有预选的 selectFields:

routes.py:

form_inquiry = ViewInquiryForm()     

form_inquiry.taskID.choices = [(g.id, g.taskDescription) for g in InquiryTask.query.all()]
form_inquiry.taskID.process_data(resultInquiry.taskID)

if request.method == 'GET':
   form_inquiry.lastEditByID = resultUser.username
   return render_template('main/viewInquiry.html', form_inquiry=form_inquiry)

if form_inquiry.validate_on_submit():
    inquiry = resultInquiry
    inquiry.lastEditByID = current_user.id
    inquiry.taskID = form_inquiry.taskID.data
    db.session.commit()
    return redirect(url_for('main.viewInquiries'))

我想在 selectField 字段中预选当前 taskID,它代表数据库中当前查询的 taskID,使用以下命令:

form_inquiry.taskID.process_data(resultInquiry.taskID)

这工作正常,但当我使用它时,未应用 selectField 中新的、不同的 taskID 选择。记录不会更新此 属性。 form_inquiry.taskID.data 将保持预选值。 当我删除预选时它工作正常。

那么,还有其他的方法吗?

解决方案是在 GET 请求中设置您的预选值,并且在 POST 请求期间不要进行任何预选。

form_inquiry = ViewInquiryForm()     

form_inquiry.taskID.choices = [(g.id, g.taskDescription) for g in InquiryTask.query.all()]

if request.method == 'GET':
    form_inquiry.taskID.process_data(resultInquiry.taskID)
    form_inquiry.lastEditByID = resultUser.username
    return render_template('main/viewInquiry.html', form_inquiry=form_inquiry)