I多くの自己参照の多くは、次の基本的なSQLAlchemyのモデルを持っている:SQLAlchemyの自己参照
class Organisation(Base):
__tablename__ = 'organisation'
name = Column(String(50))
url = Column(String(128))
associated = relationship(
'Organisation',
secondary="organisation_map",
primaryjoin="Organisation.id==organisation_map.c.organisation_id",
secondaryjoin="Organisation.id==organisation_map.c.assoc_organisation_id",
backref="account_organisation"
)
アソシエーションテーブルは次のようになります。
class OrganisationMap(Base):
__tablename__ = 'organisation_map'
organisation_id = Column(Integer, ForeignKey('organisation.id'))
assoc_organisation_id = Column(Integer, ForeignKey('organisation.id'))
is_customer = Column(Boolean, default=False)
is_supplier = Column(Boolean, default=False)
アソシエーションテーブルには、モデル自体から参照できるようにするために、is_customer
とis_supplier
の余分なデータが含まれています。
class Organisation(Base):
...
def get_suppliers(self):
pass
def get_customers(self):
pass
現時点で
は、私は、最初の関連テーブルを照会せずに、このようなリストを取得する方法はありませんOrganisationMap
、IDSに「顧客」や「サプライヤーののを取得し、その後IDのリストでOrganisation
テーブルを照会します。
これは可能ですか?
[この質問](http://stackoverflow.com/questions/7417906/sqlalchemy-manytomany-secondary-table-with-additional-fields)を参照してください。自己参照パーツは、構成に対して名目上の変更が必要なだけです。 – univerio