最近在学习中遇到了如下代码。
if cid == 1:
paginate = News.query.filter().order_by(News.create_time.desc())
else:
paginate = News.query.filter(News.category_id == cid).order_by(News.create_time.desc())
条件不同的情况下,有不同的查找条件,但是大部分的代码相同。可以归成一句
News.query.filter(*args).order_by(News.create_time.desc())
然后我们就可以在不同的条件中赋值args:
args = []
if cid != 1:
args.append(News.category_id == cid)
最后拼在一起就是:
args = []
if cid != 1:
args.append(News.category_id == cid)
paginate = News.query.filter(*args).order_by(News.create_time.desc())