Mam zdefiniowane następujące obiekty i relacje. Jest to w rzeczywistości dość prosty przypadek i dostarczam wszystkie te pola tylko po to, aby pokazać, dlaczego sądzę, że wdychanie i znieczulenie przez wstrzyknięcie powinny być określone przez dwie różne klasy.skojarzenia klasy wiele/podzielone w sqlalchemy
class InhalationAnesthesia(Base):
__tablename__ = "inhalation_anesthesias"
id = Column(Integer, primary_key=True)
anesthetic = Column(String)
concentration = Column(Float)
concentration_unit = Column(String)
duration = Column(Float)
duration_unit = Column(String)
class TwoStepInjectionAnesthesia(Base):
__tablename__ = "twostep_injection_anesthesias"
id = Column(Integer, primary_key=True)
anesthetic = Column(String)
solution_concentration = Column(Float)
solution_concentration_unit = Column(String)
primary_dose = Column(Float)
primary_rate = Column(Float)
primary_rate_unit = Column(String)
secondary_rate = Column(Float)
secondary_rate_unit = Column(String)
class Operation(Base):
__tablename__ = "operations"
id = Column(Integer, primary_key=True)
anesthesia_id = Column(Integer, ForeignKey('inhalation_anesthesias.id'))
anesthesia = relationship("InhalationAnesthesia", backref="used_in_operations")
bym jednak chciał zdefiniować znieczulający atrybut klasy Operation
w taki sposób, że każda Operation
obiekt może wskazywać albo TwoStepInjectionAnesthesia
obiekt lub przedmiot InhalationAnesthesia
.
Jak mogę to zrobić?
Używając tego ustawienia powinienem móc odwoływać się do obiektów "InhalationAnesthesia" i "TwoStepInjectionAnesthesia' w" Operation.anesthesia "? Używanie 'Operation.anesthesia = [TwoStepInjectionAnesthesia (..), InhalationAnesthesia (..), Inhalationanesthesia (..)]' coś zepsuć? – TheChymera
@ TheChymera Tak i tak. W podanym przykładzie instancja 'Operation' odwoła się tylko do jednego obiektu' Anesthesia'. Jeśli chcesz, aby była to lista, powinieneś nieco zmienić kod. –
Jeszcze jedna rzecz, jaka jest zaleta korzystania z powyższej konfiguracji (poza nieco lepszą organizacją na końcu Pythona)? czy rzeczywista tabela sql, która zostanie wygenerowana, zawiera określone typy kolumn tylko dla wierszy z określonymi dyscrminatorami? (w ten sposób oszczędzając miejsce na dysku?) – TheChymera