[英]Submitting edited Prepopulate Flask-WTForm data from database
我想用數據庫中的數據預填充表單以進行必要的更改,並使用這些更改來修改數據庫。 但是,當我在下面運行以下代碼時,初始化
form.validate_on_submit()
方法時,表單的數據是數據庫中的預填充數據,而不是編輯后的版本。 如何訪問表單數據的編輯值?
@auth.route('/edit_projects', methods=['GET', 'POST'])
@auth.route('/edit_projects/<project>', methods=['GET', 'POST'])
@login_required
def edit_projects(project=None):
form = ProjectForm()
project_db = Project.query.all()
edit_project_db = Project.query.filter_by(id=project).first()
if project != None:
form.name.data=edit_project_db.name
form.project_brief.data=edit_project_db.project_brief
form.project_description.data=edit_project_db.project_description
if form.validate_on_submit():
edit_project_db.name = form.name.data
edit_project_db.project_brief = form.project_brief.data
edit_project_db.project_description = form.project_description.data
db.session.commit()
flash('Product %s updated.' %(str(form.name.data)))
我認為這可能有助於區分“ GET”和“ POST”,在“ GET”上,您預先填充了字段,但是在“ POST”上,您想查看用戶是否實際上已經編輯了表單內容。
我會像這樣拆分代碼:
if request.method == 'GET':
# prepopulate
if project != None:
form.name.data=edit_project_db.name
form.project_brief.data=edit_project_db.project_brief
elif request.method == 'POST':
# check form validates
if form.validate_on_submit():
# keep the rest as it is
...
希望這會有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.