Я наконец-то нашел решение, которое не кажется глупым. Полный репо (который все еще очень запасной) находится здесь: https://github.com/lfernandez55/3200_wtf_parent_child_example. Ниже представлено представление update_registration, в котором подробно описано, как информация формы сохраняется при обновлении:
@app.route('/update_registration', methods=['GET', 'POST'])
def update_registration():
parentObj = Parent.query.filter(Parent.id == 1).first()
form = ParentForm(id=parentObj.id, name=parentObj.name, children=parentObj.children)
if form.add_child.data:
form.children.append_entry()
return render_template('update_registration.html', form=form)
if form.remove_child.data:
popped_entry = form.children.pop_entry()
child = Child.query.filter(Child.id == popped_entry.data['id']).first()
db.session.delete(child)
db.session.commit()
return render_template('update_registration.html', form=form)
if form.validate_on_submit():
for child in form.children.data:
if child['id'] != "":
childObj = Child.query.filter(Child.id == child['id']).first()
childObj.name=child['name']
childObj.age=child['age']
else:
childObj = Child(name=child['name'],age=child['age'])
parentObj.children.append(childObj)
db.session.add(parentObj)
db.session.commit()
flash('Parent [and children] Updated!!')
return redirect(url_for('home_page'))
return render_template('update_registration.html', form=form)