如何直接在 SQLalchemy 的过滤器中对结果设置条件?

How to put a condition on a result directly in a filter in SQLalchemy?

我有一个 table 这样的:

class Continent(Base):
    __tablename__ = "continents"

    id = Column(Integer, primary_key=True, index=True)
    name = Column(String(100), unique=True)
    created_date: Column(Integer)
    season_created = Column(Integer)

我希望能够根据创建日期检索我的大陆列表。 所以,我将花费一年和一个季节(例如,日期:10,一个季节:1)

我想获取所有早于过去日期的日期。 所以我会这样做:

db.query(Continent).filter(Continent.created_date <= date_year).all()

但是,我仍然需要检查如果结果的年份与请求的年份相同,我必须检查季节,以确保请求的季节早于数据的季节.

所以我的问题是: 如何在查询期间直接检查条件?

最后,在我看来最连贯的解决方案是使用 case

db.query(Continent).filter(case(Continent.created_date < date_years,Continent.created_date < date_years),
                              (Continent.created_date == date_years, Continent.season_created <= season),)).all()