У меня следующие объекты и отношения определены. На самом деле это довольно простой случай, и я предоставляю все эти поля, чтобы показать, почему я считаю, что ингаляция и инъекционная анестезия должны определяться двумя разными классами.ассоциации с множественным/разделенным классом в 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")
Я бы, однако, хотел бы определить обезболивающий атрибут Operation
класса таким образом, что любой Operation
объекта может указывать либо на TwoStepInjectionAnesthesia
объект или InhalationAnesthesia
объекта.
Как я могу это сделать?
Так что, используя эту настройку, я должен иметь возможность ссылаться как на объекты «Ингаляционная анестезия», так и на объекты «TwoStepInjectionAnesthesia» в разделе «Operation.anesthesia»? Использует 'Operation.anesthesia = [TwoStepInjectionAnesthesia (..), InhalationAnesthesia (..), Inhalationanesthesia (..)]' mess что-нибудь? – TheChymera
@ TheChymera Да и да. В приведенном примере экземпляр 'Operation' будет ссылаться только на один объект Anesthesia. Если вам нужно, чтобы это был список, вы должны немного изменить код. –
Еще одна вещь: в чем преимущество использования вышеприведенной настройки (кроме того, что она немного лучше организована на конце python)? будет ли созданная фактическая таблица sql содержать определенные типы столбцов только для строк с определенными дискриматорами? (тем самым экономя дисковое пространство?) – TheChymera