在烧瓶SQLAlchemy中,在关系法backref参数允许您指定类下宣布一个新的属性,如在本例中看到他们的docs:烧瓶SQLAlchemy的backref功能和backref参数
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'))
但然后还有一个backref
功能:
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')
在这种情况下,有什么backref
功能传递给backref
参数的作用,尤其是与多个lazy
的定义?与backref='person'
有什么不同?
使用backref对象可以更改反向引用关系的行为/配置。在你的情况下'Address.person'已加入配置加载。当你只传递一个字符串时,你会得到默认值。 –
@IljaEverilä不'lazy ='dynamic''也会改变加载配置吗?我认为这是什么令我困惑 – kentwait
是的。它改变了关键字参数传递给关系的配置。在你的情况'User.addresses'。 –