我有一个非常标准的多对多关系,类似于博客 - > ORM教程中的关键字关系。
我想查询关键字列表,返回其中任何一个匹配的博客帖子。但是,如果有一个简单的方法可以解决这个问题我就无法解决。如果我添加多个过滤器,请反复执行
.filter(Blog.keywords.any(Keyword.name == 'keyword'))
然后我得到一个'AND'/'EXISTS'查询,这样只返回包含所有这些关键字的帖子。是否有一种简单的方法可以将此作为“OR”查询,或者我是否需要使用join()。
感谢您的帮助;我无法弄清楚我是否遗漏了什么。
答案 0 :(得分:22)
我想你只想要
.filter(Blog.keywords.any(Keyword.name.in_(['keyword1', 'keyword2', ...])))
我正在使用http://www.sqlalchemy.org/docs/05/ormtutorial.html#common-filter-operators作为参考