我正在尝试更新一个对象,除了带有预选的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将保留预选值。 当我删除预选时它工作正常。
那么,还有其他方法吗?
答案 0 :(得分:0)
解决方案是在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)