我正在使用一个像这样分页的框架:
def get_count_query(self): return self.session.query(func.count('*')).select_from(self.model) def paginate(self): ...... count = self.get_count_query.scalar() ...
我想覆盖get_count_query方法以使用我自己的查询,因为我正在过滤一些结果而get_count_query只返回表中的所有元素.查询是动态创建的,例如,一个查询可以是:
Asset.query.join(StatusLabel).filter(StatusLabel.status == 'Deployable', or_( Asset.assigned_to.isnot(None)), Asset.deleted_at.is_(None))
我可以使用query.count()
以下方法轻松计算此查询中的元素:
def get_count_query(self): q = Asset.query.join(StatusLabel).filter(StatusLabel.status == 'Deployable', or_( Asset.assigned_to.isnot(None)), Asset.deleted_at.is_(None)) return q.count()
但是一旦它到达.scalar()方法就会失败(我无法删除此方法).所以问题是:我如何申请func.count('*')
现有的查询?
我可以从查询中检索过滤器并将其应用于func.count('*')
查询吗?