Ich brauche eine Liste der Eigenschaften eines Modells, die tatsächlich Beziehungen sind (das heißt, sie wurden von relationship()
erstellt).SQLAlchemy, Flask: Beziehungen aus einem db.Model erhalten
sagen, dass ich ein Modell haben Foo
in einem models
:
class Thing(db.Model):
id = db.Column(...)
bar_id = db.Column(...)
foo_id = db.Column(...)
foo = db.relationship('Foo')
bar = db.relationship('Bar')
Später, ich möchte eine Liste der Beziehungs Eigenschaften nehmen models.Thing
und bekommen, dass ['foo', 'bar']
ist.
Derzeit bin ich Überprüfung jedes Attribut von dir(models.Thing)
angezeigt, die vom Typ sqlalchemy.orm.attributes.InstrumentedAttribute
für die Klasse seiner property
Attribut passiert sein -, die entweder ein ColumnProperty
oder RelationshipProperty
sein kann. Das macht den Job, aber ich frage mich, ob es einen anderen Weg gibt.
Ich könnte wahrscheinlich nur alle Attribute mit der Endung _id
finden und den Beziehungsnamen ableiten, aber dies könnte für einige Fälle brechen.
Wie wäre es mit einem __relationships__ = ['foo', 'bar']
?
Oder ist in SQLAlchemy etwas eingebaut, um mir zu helfen?
Perfect, danke! – maligree
gibt es eine einfache Möglichkeit, die "Foo" und "Bar" zu sehen? – AZhao
Nicht sicher, was du meinst - es lohnt sich, eine neue Frage zu stellen und diese Frage mit Kontext zu verknüpfen. –