У меня есть отношение c 1 к 1:
class DBALSequence(base.Base):
__tablename__ = 'sequences'
id = Column(Integer, primary_key=True)
name = Column(String(255), nullable=False)
class DBALSequenceFormatter(base.Base):
__tablename__ = 'sequence_formatters'
id = Column(Integer, primary_key=True)
sequence_id = Column(ForeignKey(DBALSequence.id), nullable=False)
И я выставляю последовательность name
in DBALSequenceFormatter
из отношения с hybrid_property
:
class DBALSequenceFormatter(base.Base):
[...]
sequence = relationship(DBALSequence)
@hybrid_property
def sequence_name(self):
return sequence.name
Теперь я бы хотел заказать DBALSequenceFormatter
по sequence_name
. Обычно я делал бы что-то вроде:
@sequence_name.expression
def sequence_name(cls):
return select([DBALSequence.name]).where(DBALSequence.id == cls.id).label('sequence_name')
, которое работает просто отлично, но было бы лучше иметь возможность использовать отношения без необходимости переопределения выражения как alchemy
запроса, например:
@sequence_name.expression
def sequence_name(cls):
return cls.sequence.name
Очевидно, что это решение не работает, потому что sequence.name
не является выражением.
Кто-нибудь знает, как лучше представить гибридное свойство?