【发布时间】:2015-03-04 19:41:15
【问题描述】:
假设我有一个带有多个 可选 过滤器的查询方法。我想要实现的是,如果我将一些非 None 值传递给过滤参数然后进行过滤,如果过滤值是 None,则忽略它。
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时,我们可以做一些魔术来省略过滤器?
【问题讨论】:
标签: python mysql coding-style sqlalchemy