feat: update personal stats and cms change reuqest method
This commit is contained in:
@@ -78,7 +78,8 @@ class CmsTeacherStudentRelationViewSet(viewsets.ModelViewSet):
|
||||
filter_backends = [DjangoFilterBackend, filters.SearchFilter]
|
||||
filterset_fields = ['teacher', 'student', 'status']
|
||||
search_fields = ['teacher__real_name', 'teacher__phone', 'student__real_name', 'student__phone']
|
||||
http_method_names = ['get', 'post', 'patch', 'delete', 'head', 'options']
|
||||
# 仅 GET / POST:查=GET,增删改=POST(编辑→{id}/update/,停用→{id}/disable/)
|
||||
http_method_names = ['get', 'post', 'head', 'options']
|
||||
|
||||
def get_queryset(self):
|
||||
qs = TeacherStudentRelation.objects.select_related('teacher', 'student').all().order_by('-created_at')
|
||||
@@ -88,7 +89,7 @@ class CmsTeacherStudentRelationViewSet(viewsets.ModelViewSet):
|
||||
return qs.filter(teacher__institution_id=user.institution_id)
|
||||
|
||||
def get_serializer_class(self):
|
||||
if self.action in ('create', 'update', 'partial_update'):
|
||||
if self.action in ('create', 'update_relation'):
|
||||
return CmsRelationWriteSerializer
|
||||
return CmsRelationSerializer
|
||||
|
||||
@@ -98,14 +99,23 @@ class CmsTeacherStudentRelationViewSet(viewsets.ModelViewSet):
|
||||
rel = write.save()
|
||||
return Response(CmsRelationSerializer(rel).data, status=status.HTTP_201_CREATED)
|
||||
|
||||
def update(self, request, *args, **kwargs):
|
||||
partial = kwargs.pop('partial', False)
|
||||
@extend_schema(summary='CMS-REL-3 编辑师生关系', tags=['CMS-师生关系'])
|
||||
@action(detail=True, methods=['post'], url_path='update')
|
||||
def update_relation(self, request, pk=None):
|
||||
"""编辑师生关系(POST 局部更新,等价旧 PATCH /{id}/)。"""
|
||||
instance = self.get_object()
|
||||
write = self.get_serializer(instance, data=request.data, partial=partial)
|
||||
write = self.get_serializer(instance, data=request.data, partial=True)
|
||||
write.is_valid(raise_exception=True)
|
||||
rel = write.save()
|
||||
return Response(CmsRelationSerializer(rel).data)
|
||||
|
||||
@extend_schema(summary='CMS-REL-4 停用师生关系(逻辑删除)', tags=['CMS-师生关系'])
|
||||
@action(detail=True, methods=['post'], url_path='disable')
|
||||
def disable(self, request, pk=None):
|
||||
"""停用师生关系(软删除,等价旧 DELETE /{id}/)。"""
|
||||
self.get_object().delete()
|
||||
return Response({'message': '已停用'})
|
||||
|
||||
@extend_schema(summary='CMS-REL-4 下载师生关系导入模板', tags=['CMS-师生关系'])
|
||||
@action(detail=False, methods=['get'], url_path='import-template')
|
||||
def import_template(self, request):
|
||||
|
||||
Reference in New Issue
Block a user