Django DRF 视图 AttributeError

Django DRF view AttributeError

我正在尝试获取与 request.user 相关的数据,但我做错了。

serializers.py

class SchoolSerializerList(serializers.ModelSerializer):
     class Meta:
           model = School
           fields = ('name', 'zone', 'city', 'subCity', 'abbr',
                     'woreda', 'Schooltype', 'schoolemail', 'schoolphone', 'created_date')

views.py

 class MySchoolsView(generics.ListAPIView):
    permission_classes = [IsSchoolOwner, ]
    serializer_class = SchoolSerializerList

    def get_queryset(request):
        try:
            queryset = School.objects.filter(owner=request.user)
        except ObjectDoesNotExist:
            return Response({"error": "Nothing found."})
        return queryset

学校模型中的所有者字段是用户的外键我想通过尝试将 request.user 与 School.owner 匹配来检查当前用户是否有任何学校但是这个 returns 一个属性错误说

'MySchoolsView' object has no attribute 'user'

get_queryset 的第一个也是唯一一个参数是 self,而不是 request。您可以使用 self.ruquest 访问请求对象,因此:

class MySchoolsView(generics.ListAPIView):
    permission_classes = [IsSchoolOwner, ]
    serializer_class = SchoolSerializerList

    def get_queryset(<strong>self</strong>):
        return School.objects.filter(<strong>owner=self.request.user</strong>)

你的get_queryset也可以return一个Response。您可以提出 Http404 错误:

from django.http import <strong>Http404</strong>

class MySchoolsView(generics.ListAPIView):
    permission_classes = [IsSchoolOwner, ]
    serializer_class = SchoolSerializerList

    def get_queryset(self):
        qs = School.objects.filter(owner=self.request.user)
        if not qs:
            <strong>raise Http404('No schools found')</strong>
        return qs