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

This commit is contained in:
jeremygan2021
2026-03-10 13:47:28 +08:00
parent af763b1bee
commit 3d74ccc04f
9 changed files with 470 additions and 27 deletions

View File

@@ -1,4 +1,4 @@
from rest_framework import viewsets, permissions, status, filters
from rest_framework import viewsets, permissions, status, filters, serializers
from rest_framework.decorators import action
from rest_framework.response import Response
from django.db.models import Q
@@ -107,6 +107,10 @@ class ProjectViewSet(viewsets.ModelViewSet):
if competition_id:
queryset = queryset.filter(competition_id=competition_id)
contestant_id = self.request.query_params.get('contestant')
if contestant_id:
queryset = queryset.filter(contestant_id=contestant_id)
# 如果是普通用户,只能看到已提交的项目,或者自己草稿的项目
user = get_current_wechat_user(self.request)
if user:
@@ -152,6 +156,10 @@ class ProjectViewSet(viewsets.ModelViewSet):
except CompetitionEnrollment.DoesNotExist:
raise serializers.ValidationError("您没有参赛资格或审核未通过")
# 检查是否已提交过项目
if Project.objects.filter(competition=competition, contestant=enrollment).exists():
raise serializers.ValidationError("您已提交过该比赛的项目,请勿重复提交")
serializer.save(contestant=enrollment)
@action(detail=True, methods=['post'])