Передача данных в несколько форм в колбе-wtforms - PullRequest
0 голосов
/ 23 октября 2019

Учитывайте следующее:

{% for user in users.query.all() %}
     <tr>
         <form method='POST' action="">
             <td>{{form.username}}</td>
             <td>{{form.description}}</td>
             <td>{{form.submit(value="Update")}}</td>
         </form>
     </tr>
{% endfor %}

Для каждого пользователя это создаст небольшую форму, которую я могу обновить, я хочу заполнить эти формы текущими данными базы данных

Что я пытался сделатьв файле маршрутов:

@app.route("/Users")
def listUsers():
    users = Users
    form = UserForm()
    if request.method == 'GET':
        for user in users.query.all():
            form.username.data = user.username
            form.description.data = user.description
    return render_template('Users.html', users=users, form=form)

Это приводит к тому, что данные последнего пользователя заполняют все формы, как я могу это исправить? Я думал о назначении идентификатора для каждой формы, которая соответствует пользователю, но как я смогу отправить динамическое число форм?

1 Ответ

1 голос
/ 23 октября 2019

Это заняло у меня некоторое время, но я нашел способ обойтись, просто опубликую его, если у кого-то есть такая же проблема:

Я использовал javascript ... создал функцию и вызвал ее в цикле forкоторый заполнил поля для меня

function populateForm(username,description){
    var form = document.getElementById('form id here');
    form.nextElementSibling.value = username;
    form.nextElementSibling.nextElementSibling.textContent = description;
}

обратите внимание, что я использовал значение для поля ввода и textContent для текстового поля, затем внутри цикла for я добавил тег сценария

<script>
    populateForm('{{user.username}}','{{user,description}}');
</script>
...