预选 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)
我正在尝试更新一个对象,它工作正常,除了我的带有预选的 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)