operations_project/apps/operation/pagination.py

31 lines
1.2 KiB
Python
Raw Permalink Normal View History

2025-05-13 11:58:17 +08:00
from rest_framework.pagination import PageNumberPagination
from rest_framework.response import Response
class CustomPagination(PageNumberPagination):
"""自定义分页器,返回格式为 {code, message, data}"""
page_size = 10
page_size_query_param = 'page_size'
max_page_size = 100
def get_paginated_response(self, data):
2025-05-20 15:57:10 +08:00
# 为那些没有name字段或name字段为空的项目设置默认值
for item in data:
if 'platforms' in item and len(item['platforms']) > 0:
# 只有当name为空或不存在时才使用platform_name作为默认值
if not item.get('name'):
platform = item['platforms'][0]
item['name'] = platform.get('platform_name', '')
2025-05-13 11:58:17 +08:00
return Response({
"code": 200,
"message": "获取数据成功",
"data": {
"count": self.page.paginator.count,
"next": self.get_next_link(),
"previous": self.get_previous_link(),
"results": data,
"page": self.page.number,
"pages": self.page.paginator.num_pages,
"page_size": self.page_size
}
})