У меня проблема с использованием прослушивателя событий с моделью отношений, мой класс модели представляет собой таблицу с самоссылкой:
class Distributor(Base):
__tablename__ = "distributors"
id = Column(Integer, primary_key=True)
name = Column(String, nullable = False)
upline_id = Column(Integer, ForeignKey('distributors.id'))
upline = relationship('Distributor', remote_side=id, backref=backref('downlines'))
и я пытаюсь зарегистрировать слушателя на событие добавления в коллекцию нижестоящих:
def my_append_listener(target, value, initiator):
branch_develop = len(target.downlines)
и эта строка:
event.listen(Distributor.downlines, 'append', my_append_listener)
выдаст ошибку: AttributeError: тип объекта «Распространитель» не имеет атрибута «downlines»
но можно написать что-то вроде:
george = Distributor("george", None)
george.downlines = [Distributor("downlineUser")]
и я также обнаружил, что если переписать отношение к этому:
downlines = relationship('Distributor', backref=backref('upline', remote_side=id))
все работает отлично. Может кто-нибудь сказать мне, что не так в коде?