我想要以下内容:
q = db.session.query(db.models.Something).filter(a==a).filter(b==b).or().filter(c==c).filter(foo==bar)
这意味着a = a和b = b或c = c且d = d。
我强烈希望避免在过滤器调用本身中应用它。
答案 0 :(得分:0)
from sqlalchemy.sql import or_, and_
q = db.session.query(db.models.Something).filter(
or_(
and_(a==a, b==b),
and_(c==c, foo==bar)
))
或者您可以使用&
和|
运营商:
q = db.session.query(db.models.Something).filter(
(a==a) & (b==b) | (c==c) & (foo==bar))