title: Flask-SQLAlchemy backref function and backref parameter
body: <p>In Flask-SQLAlchemy, the backref parameter in relationship method allows you to declare a new property under a specified class as seen in the example in their <a href="http://flask-sqlalchemy.pocoo.org/2.1/models/#one-to-many-relationships" rel="noreferrer">docs</a>:</p>
  
  <pre><code>class Person(db.Model):
      id = db.Column(db.Integer, primary_key=True)
      name = db.Column(db.String(50))
      addresses = db.relationship('Address', backref='person', lazy='dynamic')
  
  class Address(db.Model):
      id = db.Column(db.Integer, primary_key=True)
      email = db.Column(db.String(50))
      person_id = db.Column(db.Integer, db.ForeignKey('person.id'))
  </code></pre>
  
  <p>But then there is also a <code>backref</code> function:</p>
  
  <pre><code>class User(db.Model):
      id = db.Column(db.Integer, primary_key=True)
      name = db.Column(db.String(50))
      addresses = db.relationship('Address',
                                  backref=db.backref('person', lazy='joined'), 
                                  lazy='dynamic')
  </code></pre>
  
  <p>In this case, what's the role of the <code>backref</code> function passed to the <code>backref</code> parameter, especially with the multiple <code>lazy</code> definitions? How is it different from <code>backref='person'</code>?</p>