Ich versuche, die folgende Situation zu modellieren: Ein Programm hat viele Versionen, und eine der Versionen ist die aktuelle (nicht unbedingt die neueste).Eine zu viele + eine Beziehung in SQLAlchemy?
Dies ist, wie ich es jetzt tue:
class Program(Base):
__tablename__ = 'programs'
id = Column(Integer, primary_key=True)
name = Column(String)
current_version_id = Column(Integer, ForeignKey('program_versions.id'))
current_version = relationship('ProgramVersion', foreign_keys=[current_version_id])
versions = relationship('ProgramVersion', order_by='ProgramVersion.id', back_populates='program')
class ProgramVersion(Base):
__tablename__ = 'program_versions'
id = Column(Integer, primary_key=True)
program_id = Column(Integer, ForeignKey('programs.id'))
timestamp = Column(DateTime, default=datetime.datetime.utcnow)
program = relationship('Filter', foreign_keys=[program_id], back_populates='versions')
Aber dann bekomme ich die Fehlermeldung: Konnte nicht ermitteln Zustand zwischen Eltern/Kind-Tabellen auf Beziehung Program.versions beitreten - es mehrere Fremdschlüsselpfade Verknüpfen der Tabellen. Geben Sie das Argument 'foreign_keys' an und geben Sie eine Liste der Spalten an, die gezählt werden sollen und die einen Fremdschlüsselbezug zur übergeordneten Tabelle enthalten.
Aber welchen Fremdschlüssel sollte ich für die "Program.versions" -Beziehung bereitstellen? Gibt es eine bessere Möglichkeit, diese Situation zu modellieren?