Python SQLAlchemy:过滤多对多joinedload

Python SQLAlchemy:过滤多对多joinedload,python,filter,sqlalchemy,many-to-many,Python,Filter,Sqlalchemy,Many To Many,我有“单词”和“短语”之间多对多关联的当前表格设置: 现在,通常当我想查找一些单词及其短语时,我会使用: words = db_session.query(Word).filter(Word.id.in_(word_ids)).\ options(joinedload(Word.phrases)).\ all() 这允许我访问单词[i]。短语访问与给定单词关联的短语 现在,这很好,但请注意“活动”属性。我想过滤单词的短语,以便只返回activ

我有“单词”和“短语”之间多对多关联的当前表格设置:

现在,通常当我想查找一些单词及其短语时,我会使用:

words = db_session.query(Word).filter(Word.id.in_(word_ids)).\
             options(joinedload(Word.phrases)).\
             all()
这允许我访问
单词[i]。短语
访问与给定单词关联的短语

现在,这很好,但请注意“活动”属性。我想过滤单词的短语,以便只返回
active==True
的短语。如何做到这一点?我尝试了几种连接和加载的组合,但没有一种像我希望的那样有效

非常感谢。

我想这就是您想要的:

words=db\u session.query(Word)\
连接(单词、短语)\
选项(包含单词短语)\
过滤器(Word.id.in(Word\u id))\
过滤器(Phrase.active==True)
我想这就是你想要的:

words=db\u session.query(Word)\
连接(单词、短语)\
选项(包含单词短语)\
过滤器(Word.id.in(Word\u id))\
过滤器(Phrase.active==True)

不幸的是,这是我已经尝试过的选项之一,我一直等到今天才测试它,只是为了确保它不起作用。我得到的结果与上面的查询相同。好吧,看起来我可能有一些奇怪的缓存问题,但无论如何,这确实有效。非常感谢。不幸的是,这是我已经尝试过的选项之一,我一直等到今天才测试它,只是为了确定,但它不起作用。我得到的结果与上面的查询相同。好吧,看起来我可能有一些奇怪的缓存问题,但无论如何,这确实有效。非常感谢。
words = db_session.query(Word).filter(Word.id.in_(word_ids)).\
             options(joinedload(Word.phrases)).\
             all()