ViewSet不經過Swagger傳參給serializer

①ViewSet不經過Swagger傳參給serializer

②ViewSet自定義filter用於篩選request中數據

1. filter.py

    class TeacherFilterBackend(BaseFilterBackend):
        def filter_queryset(self, request, queryset, view):
            if not request.user.is_authenticated:
                return queryset.none()
            school = request.user.school
            if school:
                queryset = queryset.filter(school=school)
                return queryset
            else:
                return queryset.none()

2. views.py

    class TeacherViewSet(ListAPIView, GenericViewSet):
        '''測試獲取列表'''
        filter_backends = [TeacherFilterBackend]
        queryset = Teacher.objects.all()
        serializer_class = TeacherSerializer
        permission_classes = [DjangoModelPermissions]
    
        def get_serializer_context(self):
            return {'name': self.request.GET.get("name")}

3. serializer.py

    # 測試獲取列表序列化
    class TeacherSerializer(serializers.ModelSerializer):
        status = serializers.SerializerMethodField()
    
        def get_status(self,obj):
            name = self.context['name']
            try:
                obj.students_set.get(name=name)
                return "1"
            except:
                return "0"
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章