2016-05-03 3 views
0

Я хотел бы предварительно заполнить мою форму данными из моей базы данных, чтобы внести необходимые изменения и изменить мою базу данных с этими изменениями. enter image description here Однако, когда я запускаю следующий код ниже, когда инициализируется метод form.validate_on_submit(), данные формы являются предварительно заполненными данными из базы данных, а не отредактированной версией. Как получить доступ к редактируемому значению данных формы?Отправка отредактированных Prepopulate Flask-WTForm данных из базы данных

@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))) 

ответ

1

Я думаю, что это может помочь различать «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 
     ... 

Надеется, что это предлагает некоторую помощь.

Смежные вопросы