Мне нужно получить список свойств модели, которые на самом деле являются отношениями (т.е. они были созданы 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, чтобы помочь мне?