This commit is contained in:
2026-02-12 22:15:26 +08:00
parent 6e26f66338
commit 4bba4786cc
52 changed files with 25 additions and 33 deletions

View File

@@ -47,6 +47,13 @@ class Activity(models.Model):
return self.banner.url
return self.banner_url
@property
def current_signups(self):
"""
当前有效报名人数
"""
return self.signups.exclude(status='cancelled').count()
def __str__(self):
return self.title

View File

@@ -6,17 +6,13 @@ from .utils import get_current_wechat_user
class ActivitySerializer(serializers.ModelSerializer):
display_banner_url = serializers.ReadOnlyField()
signup_form_config = serializers.SerializerMethodField()
current_signups = serializers.SerializerMethodField()
current_signups = serializers.ReadOnlyField()
has_signed_up = serializers.SerializerMethodField()
class Meta:
model = Activity
fields = '__all__'
def get_current_signups(self, obj):
# 统计非取消状态的报名人数
return obj.signups.exclude(status='cancelled').count()
def get_has_signed_up(self, obj):
request = self.context.get('request')
if not request:

View File

@@ -21,6 +21,13 @@ class ActivityViewSet(viewsets.ReadOnlyModelViewSet):
queryset = Activity.objects.filter(is_active=True).order_by('-created_at')
serializer_class = ActivitySerializer
def retrieve(self, request, *args, **kwargs):
instance = self.get_object()
serializer = self.get_serializer(instance)
# Debug print to verify data
print(f"DEBUG: Activity {instance.title} current_signups: {instance.current_signups}")
return Response(serializer.data)
@extend_schema(summary="报名活动")
@action(detail=True, methods=['post'])
def signup(self, request, pk=None):