4
假设我有一个查询方法,其中包括可选过滤器。我想实现的是,如果我传递一些非None值来过滤参数,那么做一个过滤器,如果过滤器值为None,那么就忽略它。sqlalchemy - 优雅的方式来处理几个可选的过滤器?
def get_query_results(filter1=None, filter2=None, ...):
res = models.Item.query
if filter1 is not None:
res = res.filter(filter1=filter1)
if filter2 is not None:
res = res.filter(filter2=filter2)
....
return res.all()
我想避免的是模式
if XXX:
res.filter(XXX=XXX)
我不知道是否有任何更优雅的方式来实现这一目标?
例如,通过各种过滤器作为参数?
或者,也许,我们可以做一些神奇的事情,当过滤器值为None时省略过滤器?