我正在寻找一种在过滤器中引用连接表的方法。我的疑问是:
session.query(A).outerjoin(B, C, D).filter(B.column_b == 1, C.column_c == 2)
如何在不命名模型B和C的情况下进行此类过滤?
session.query(A).outerjoin(B, C, D).filter_by(column_b=1, column_c=2)
不起作用,因为filter_by尝试在D. aliased()中找到'column_b'和'column_c',而alias()也不起作用。
我以{"column_a": 0, "column_b": 1, "column_c": 2}
的形式收到field_to_value的dict,我需要创建一个查询。当然,我可以有一个像{"column_a": A.column_b, "column_b": B.column_b, "column_c": C.column_c}
这样的映射。但应该有更好的方法。
有没有什么好方法可以进行这样的过滤?
答案 0 :(得分:0)
filter_by适用于最后一个连接,因此您应该能够破坏外部连接。尝试:
session.query(A).outerjoin(B).filter_by(column_b == 1)
.outerjoin(C).filter_by(column_c == 2)
.outerjoin(D)