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
我正在尝试获取与 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