比赛
All checks were successful
Deploy to Server / deploy (push) Successful in 36s

This commit is contained in:
jeremygan2021
2026-03-10 12:35:41 +08:00
parent 417cda952d
commit 3ada996915
9 changed files with 388 additions and 11 deletions

View File

@@ -10,6 +10,13 @@ from .serializers import (
ScoreSerializer, CommentSerializer, ScoreDimensionSerializer
)
from rest_framework.pagination import PageNumberPagination
class StandardResultsSetPagination(PageNumberPagination):
page_size = 10
page_size_query_param = 'page_size'
max_page_size = 100
class CompetitionViewSet(viewsets.ReadOnlyModelViewSet):
"""
比赛视图集
@@ -17,9 +24,23 @@ class CompetitionViewSet(viewsets.ReadOnlyModelViewSet):
queryset = Competition.objects.filter(is_active=True).order_by('-created_at')
serializer_class = CompetitionSerializer
permission_classes = [permissions.AllowAny]
pagination_class = StandardResultsSetPagination
filter_backends = [filters.SearchFilter]
search_fields = ['title', 'description']
def get_queryset(self):
"""
获取比赛查询集,支持根据查询参数进行动态过滤
"""
queryset = super().get_queryset()
# 状态过滤
status_param = self.request.query_params.get('status')
if status_param and status_param != 'all':
queryset = queryset.filter(status=status_param)
return queryset
@action(detail=True, methods=['post'], permission_classes=[permissions.AllowAny])
def enroll(self, request, pk=None):
"""