n
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user