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

时间:2018-04-18 17:23:47

标签: flask flask-wtforms

我正在尝试更新一个对象,除了带有预选的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将保留预选值。 当我删除预选时它工作正常。

那么,还有其他方法吗?

1 个答案:

答案 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)