Я работаю над рефакторингом какой-то устаревшей системы, и в настоящее время у нас есть что-то вроде:
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
, но в настоящее время я не могу этого сделать, потому что странные зависимости