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
поле owner в модели школы является foreignkey для пользователя. Я хотел проверить, имеет ли текущий пользователь какие-либо школы, пытаясь сопоставить request.user с School.owner, но это возвращает ошибку атрибута, говорящую
'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(self):
return School.objects.filter(owner=self.request.user)
Ваш get_queryset может также не возвращать Response. Вы можете поднять ошибку Http404:
from django.http import Http404
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:
raise Http404('No schools found')
return qs