Мне нужно получить список свойств модели, которые на самом деле являются отношениями (т.е. они были созданы relationship()).
Скажем, у меня есть модель Foo в models:
class Thing(db.Model):
id = db.Column(...)
bar_id = db.Column(...)
foo_id = db.Column(...)
foo = db.relationship('Foo')
bar = db.relationship('Bar')
Позже я хочу взять models.Thing и получить список свойств-отношений, то есть ['foo', 'bar'].
В настоящее время я проверяю каждый атрибут, указанный dir(models.Thing), который имеет тип sqlalchemy.orm.attributes.InstrumentedAttribute для класса его атрибута property, который может быть либо ColumnProperty, либо RelationshipProperty. Это делает работу, но мне было интересно, есть ли другой способ.
Я мог бы просто найти все атрибуты, заканчивающиеся на _id, и получить имя отношения, но это может сломаться для некоторых случаев.
Как насчет установки __relationships__ = ['foo', 'bar']?
Или есть что-то встроенное в SQLAlchemy, чтобы помочь мне?