Я использую SQLAlchemy в своем проекте.
У меня есть два класса, называем их Bar и Foo
class Bar(object):
def valueize(self, name):
# do some crazy magic
return value
class Foo(Base):
id = Column(...
name = Column(...
@property
def value(self):
return self._bar.valueize(self.name)
Foo создается либо путем непосредственного создания объекта, либо SQLalchemy, когдазагружает объекты Foo из базы данных.Но Фу нужен объект Bar для работы.Но как мне получить ссылку на Bar в Foo?
Обычно я просто передаю Bar в конструктор Foo.Однако это не сработает, потому что SQLAlchemy создает объект.
Что я хочу сделать, так это каким-то образом настроить сеанс с объектом Bar таким образом, чтобы этот объект bar вводился в объекты Foo при их добавлении в сеанс.
Что я попробовал
В SQLAlchemy есть система событий.Одним из событий сеанса является on_attach.Это вызывается всякий раз, когда объект добавляется в сеанс.Однако он не вызывается, когда объект загружается из базы данных.
Существуют события, которые вызываются при загрузке из базы данных, но они относятся к отдельным картографам.Объект Bar должен быть связан с отдельным сеансом.