title: Flask - how do I combine Flask-WTF and Flask-SQLAlchemy to edit db models?
body: <p>I'm trying to create an edit page for an existing model (already saved to db). The form object expects a multidict instance to populate its fields. This is what I have:</p>
  
  <pre><code># the model - assumes Flask-SQLAlchemy
  from flask.ext.sqlalchemy import SQLAlchemy
  db = SQLAlchemy(app)
  class Person(db.Model):
      id   = db.Column(db.Integer, primary_key=True)
      name = db.Column(db.String(80), unique=True)
  
      def __init__(self, name=name):
          self.name = name
  
  
  # the form - assumes Flask-WTF ext.
  from flask.ext.wtf import Form, TextField, Required, BooleanField
  
  class PersonForm(Form):
      name = TextField('name')
  
  
  ## the view
  @app.route('/person/edit/&lt;id&gt;/', methods=['GET', 'POST'])
  def edit_person(id):
      person = Person.query.get(id)
      if person:
          form = PersonForm(person) #&lt;-- raises error
          return render_template('edit_person.html', form=form)
  </code></pre>
  
  <p>I could assign each field in the form to each field of the model <code>(form.data['name'] = person.name, etc...)</code>, but that seems redundant for large models. Is there any shortcut I'm missing?</p>