Get_queryset() отсутствует 1 необходимый позиционный аргумент: 'request', когда я пытаюсь отфильтровать объекты по вошедшему пользователю

Я пытаюсь вывести список всех объектов, принадлежащих пользователю, на "странице списка объектов", используя django rest framework и react. Я пытался сделать следующее (admin_uid - это поле один к одному пользователя, владеющего объектом):

class FacilityListView(ListAPIView):
    permission_classes = [AllowAny]
    serializer_class = FacilitySerializer
    

    def get_queryset(self, request):
        return Facility.objects.filter(admin_uid=self.request.user)

Я получаю эту ошибку:

django | queryset = self.filter_queryset(self.get_queryset()) django | TypeError: get_queryset() missing 1 required positional argument: 'request'

>

Вот что у меня было раньше, что работало, но перечисляло все объекты:

class FacilityListView(ListAPIView):
    permission_classes = [AllowAny]
    serializer_class = FacilitySerializer

    def get_queryset(self):
        return Facility.objects.all()

Вы можете это сделать

class FacilityListView(ListAPIView):
permission_classes = [AllowAny]
serializer_class = FacilitySerializer


def get_queryset(self, request):
    admin_uid = self.request.user.id
    return Facility.objects.filter(admin_uid=admin_uid)

Вам нужно будет сделать 2 вещи:

Первое - функция get_queryset принимает только один параметр, self, поэтому удалите request из определения fn.

Второе - Для получения подробной информации о вошедшем пользователе добавьте permission_class = [isAuthenticated]

Для не вошедшего пользователя вы можете создать другое представление с классом разрешения = allowany, потому что ваш фильтр не будет работать для не аутентифицированных пользователей.

Вернуться на верх