diff --git a/backend/view.py b/backend/view.py index c6f5a95..1568181 100644 --- a/backend/view.py +++ b/backend/view.py @@ -9022,13 +9022,13 @@ class KhjlglView(APIView): if page_size > 100: page_size = 100 - qs = _build_shenhe_jilu_filters(request.data) + filter_data = request.data + qs = _build_shenhe_jilu_filters(filter_data) - stats_qs = qs - agg = stats_qs.aggregate( - total_fee=Sum('jiaofei_jine'), - ) - tag_rows = stats_qs.values( + # FluentQuery.filter() 会原地修改同一对象;统计与列表必须各自独立查询 + stats_base = _build_shenhe_jilu_filters(filter_data) + agg = stats_base.aggregate(total_fee=Sum('jiaofei_jine')) + tag_rows = _build_shenhe_jilu_filters(filter_data).values( 'chenghao_id', 'chenghao__mingcheng' ).annotate( total=Count('jilu_id'), @@ -9039,11 +9039,11 @@ class KhjlglView(APIView): ).order_by('-total') stats = { - 'total': stats_qs.count(), - 'passed': stats_qs.filter(zhuangtai=1).count(), - 'failed': stats_qs.filter(zhuangtai=2).count(), - 'in_progress': stats_qs.filter(zhuangtai=0).count(), - 'pending': stats_qs.filter(zhuangtai=3).count(), + 'total': stats_base.count(), + 'passed': _build_shenhe_jilu_filters(filter_data).filter(zhuangtai=1).count(), + 'failed': _build_shenhe_jilu_filters(filter_data).filter(zhuangtai=2).count(), + 'in_progress': _build_shenhe_jilu_filters(filter_data).filter(zhuangtai=0).count(), + 'pending': _build_shenhe_jilu_filters(filter_data).filter(zhuangtai=3).count(), 'total_fee': float(agg['total_fee'] or 0), 'tag_stats': [ { @@ -9061,7 +9061,7 @@ class KhjlglView(APIView): total = qs.count() start = (page - 1) * page_size - rows = qs.order_by('-CreateTime')[start:start + page_size] + rows = qs.order_by('-CreateTime')[start:start + page_size].to_list() uids = [] jilu_ids = []