Sqlalchemy 如何将同一字段用作不同表的外键?

Sqlalchemy 如何将同一字段用作不同表的外键?,sqlalchemy,foreign-keys,many-to-many,Sqlalchemy,Foreign Keys,Many To Many,我有许多表可以用作源数据,每个科学领域一个表(BioData、GeolData、GravData、MagnData等等)。 还有另一个表,即主表,名为Product,用于存储每个产品的信息,如其id、相关项目等。每个产品也由一组数据组成。这些数据记录存储在这些规则表中 例如,为了存储产品和BioData的数据记录之间的关系,我所做的是创建一个名为Dataset_data的多对多表。该声明是使用sqlacodegen生成的,sqlacodegen是“SQLAlchemy的自动模型代码生成器” t_

我有许多表可以用作源数据,每个科学领域一个表(BioData、GeolData、GravData、MagnData等等)。 还有另一个表,即主表,名为Product,用于存储每个产品的信息,如其id、相关项目等。每个产品也由一组数据组成。这些数据记录存储在这些规则表中

例如,为了存储产品和BioData的数据记录之间的关系,我所做的是创建一个名为Dataset_data的多对多表。该声明是使用sqlacodegen生成的,sqlacodegen是“SQLAlchemy的自动模型代码生成器”

t_Dataset_Data = Table(
    'Dataset_Data', metadata,
    Column('dataset_id', ForeignKey(u'Product.product_id'), primary_key=True, nullable=False),
    Column('data_id', ForeignKey(u'BioData.id'), primary_key=True, nullable=False),
    schema='public'
)

class Product(Base):
    __tablename__ = 'Product'
    __table_args__ = {u'schema': 'public'}

    project_id = Column(ForeignKey(u'Projects.p_id'), nullable=False)
    dataTable_id = Column(ForeignKey(u'DataTables.id'), nullable=False)
    product_id = Column(Integer, primary_key=True)

    project = relationship(u'Projects')
    datatablename = relationship(u'DataTables')

    data = relationship(u'BioData', secondary=t_Dataset_Data)
使用sqlAlchemy,当我使用prod.data访问某个产品对象时,我将可以访问与我的产品相关的所有BioData记录。 到目前为止还不错

我现在需要的是允许Product与所有其他数据表之间的关系,也就是说,不要使用BioData,而是使用另一个数据表,例如GeolData。请注意,一个产品始终仅与一个规程表相关,即,根据产品的dataTable_id,使产品来自同一数据表的数据记录。 所以我需要在t_Dataset_数据上声明外键可以是另一个表(不仅仅是Biodata),因此产品的“Data”属性可以是另一个源

简言之,我需要知道是否可以在Dataset_data的“data_id”列中使用不同的FK,即,如何使用此列指向不同的表。
如果不可能,哪种方法可能是实现我所需的最佳方法?

糟糕的是,这还没有得到回答。我现在正试图做一些非常类似的事情,这真是一件令人头痛的事:)如果我设法让它工作的话,它会更新,当然这还没有得到回答。我现在正试图做一些非常类似的事情,这真是一件让人头疼的事:)如果我设法让它工作起来,它将更新