'Hybrid expression for relationship of relationship
I have three models linked by a relationship chain. An entry has requests and a partner. So every request has a related partner by this:
class Request(db.Model):
__tablename__ = "requests"
id = db.Column(UUID, primary_key=True, default=uuid.uuid4)
entry_id = db.Column(
UUID,
db.ForeignKey("entries.id", name="requests_entry_fk"),
nullable=False,
)
entry = db.relationship("Entry", back_populates="requests")
class Entry(db.Model):
__tablename__ = "entries"
id = db.Column(UUID, primary_key=True, default=uuid.uuid4)
requests = db.relationship(
"Request", back_populates="entry", lazy="dynamic"
)
partner_id = db.Column(
UUID, db.ForeignKey("partners.id"), nullable=False
)
partner = db.relationship("Partner", back_populates="entries")
class Partner(db.Model):
__tablename__ = "partners"
id = db.Column(UUID, primary_key=True, default=uuid.uuid4)
entries = db.relationship("Entry", back_populates="partner", lazy="dynamic")
On the Request model I'd like to add the Partner as well but since the Entry already relates to it I figured a simple hybrid_property will suffice:
@hybrid_property
def partner(self):
return self.entry.partner
@partner.expression
def partner(cls):
return select([Entry.partner]).where(cls.entry_id == Entry.id)
But the expression does not seem to work at all:
Neither 'hybrid_property' object nor 'ExprComparator' object associated with Request.partner has an attribute 'id'
What am I missing here?
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
