diff --git a/business/models.py b/business/models.py index a4b8b98..960c947 100644 --- a/business/models.py +++ b/business/models.py @@ -105,7 +105,7 @@ class Schedule(models.Model): class role(models.Model): RoleName = models.CharField(max_length=100) # 角色名称 - permissionId = models.CharField(max_length=100) # 权限 + permissionId = models.CharField(max_length=1000) # 权限 remark = models.CharField(max_length=200) # 备注 diff --git a/business/views.py b/business/views.py index d32e30a..3837c88 100644 --- a/business/views.py +++ b/business/views.py @@ -1927,7 +1927,11 @@ class modifypermissions(APIView): return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST) permissionId = ast.literal_eval(permissionId) ro = role.objects.get(id=id) - ro.permissionId = permissionId + # Convert list to compact comma-separated string format to save space + if isinstance(permissionId, list): + ro.permissionId = ','.join(map(str, permissionId)) + else: + ro.permissionId = str(permissionId) ro.save(update_fields=['permissionId']) return Response({'message': '权限修改成功', 'code': 0}, status=status.HTTP_200_OK) @@ -1954,10 +1958,14 @@ class getRolePermissions(APIView): # 解析权限ID列表 try: if ro.permissionId: - permission_ids = ast.literal_eval(ro.permissionId) - # 确保返回的是列表 - if not isinstance(permission_ids, list): - permission_ids = [] + # Try to parse as comma-separated format first (new format) + if ',' in ro.permissionId and not ro.permissionId.strip().startswith('['): + permission_ids = [int(x.strip()) for x in ro.permissionId.split(',') if x.strip()] + else: + # Fall back to ast.literal_eval for backward compatibility + permission_ids = ast.literal_eval(ro.permissionId) + if not isinstance(permission_ids, list): + permission_ids = [] else: permission_ids = [] except (ValueError, SyntaxError):