diff --git a/backend/views/sections.py b/backend/views/sections.py index d99a9e5..6e99d73 100644 --- a/backend/views/sections.py +++ b/backend/views/sections.py @@ -139,7 +139,7 @@ class HqbkxxView(APIView): return Response({'code': 403, 'msg': '无板块管理权限'}, status=403) scope_err = block_non_group_catalog_scope(request) if scope_err: - return Response({'code': 400, 'msg': scope_err}) + return Response({'code': 400, 'msg': scope_err}, status=400) # 5. 查询所有板块 bankuai_list = [] @@ -241,7 +241,7 @@ class BkxgView(APIView): return Response({'code': 403, 'msg': '无板块管理权限'}, status=403) scope_err = block_non_group_catalog_scope(request) if scope_err: - return Response({'code': 400, 'msg': scope_err}) + return Response({'code': 400, 'msg': scope_err}, status=400) # 5. 获取操作类型 action = request.data.get('action') @@ -279,9 +279,13 @@ class BkxgView(APIView): }) # ==================== 以下操作需要 bankuai_id ==================== - bankuai_id = request.data.get('bankuai_id') - if not bankuai_id: + raw_bankuai_id = request.data.get('bankuai_id') + if raw_bankuai_id is None or str(raw_bankuai_id).strip() == '': return Response({'code': 1, 'msg': '缺少 bankuai_id'}, status=400) + try: + bankuai_id = int(raw_bankuai_id) + except (TypeError, ValueError): + return Response({'code': 1, 'msg': '无效的 bankuai_id'}, status=400) try: bk = Bankuai.query.get(bankuai_id=bankuai_id) diff --git a/jituan/views_shenhe_manage.py b/jituan/views_shenhe_manage.py index f2da2b9..a5e748b 100644 --- a/jituan/views_shenhe_manage.py +++ b/jituan/views_shenhe_manage.py @@ -17,16 +17,20 @@ logger = logging.getLogger(__name__) def _normalize_bankuai_ids(data): + """将板块 ID 统一为整数(bankuai_id 为 AutoField)。""" ids = data.get('bankuai_ids') - if ids is None and data.get('bankuai_id'): + if ids is None and data.get('bankuai_id') is not None: ids = [data.get('bankuai_id')] if not isinstance(ids, list): return [] out = [] for item in ids: - s = str(item or '').strip() - if s and s not in out: - out.append(s) + try: + bid = int(str(item).strip()) + except (TypeError, ValueError): + continue + if bid > 0 and bid not in out: + out.append(bid) return out