我正在研究一些旧系统的重构,我们目前有类似的东西:
class NominalEntry(base.Base):
paid_on = Column('date', DateTime, default=datetime.now)
class Payment(base.Base):
nominal_entries = relationship(
NominalEntry, lazy='joined', ...)
@hybrid_property
def first_nominal_entry(self):
if self.nominal_entries:
return self.nominal_entries[0]
return None
并且我想查询paid_on
上的字段NominalEntry
,所以我创建了类似的内容:
@hybrid_property
def paid_on(self):
self.first_nominal_entry.paid_on
我想实现类似的东西:
@paid_on.expression
def paid_on(cls):
return select([NominalEntry.date]).where(
DBALNominalEntry.payment_id == cls.id
).limit(1).label('paid_on')
但我想引用first_nominal_entry
。而是创建一个新查询。
有人知道吗?
我知道我可以将nominal_entries
转换为关系1to1
,但是由于奇怪的依赖关系,目前我不被允许