标题很混乱,我的不好,但我会解释我的问题。
我有3张桌子:
提取Entity1的代码
class Entity1(db.Model):
...
entity2 = db.relationship('Entity2', lazy='joined')
提取Entity2的代码
class Entity2(db.Model):
...
entity3 = db.relationship('Entity3', lazy='joined')
我想从Entity1.entity2到Entity3表进行连接,并在entity3属性上添加一个WHERE子句。
我试过了:
query = Entity1.query
query = query.join(Entity1.entity2.entity3).filter(entity2.entity3.has(code=input))
和多种变体......
答案 0 :(得分:0)
下面应该有效(版本1或版本2过滤器):
query = (
Entity1.query
.join(Entity2, Entity1.entity2)
.filter(Entity2.entity3.has(Entity3.code == input)) # version-1
# .join(Entity3, Entity2.entity3).filter(Entity3.code == input) # version-2
)