簡體   English   中英

從數據庫提交編輯的預填充Flask-WTForm數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM