Метод DRF has_object_permission в Django не вызывается с get_object

Я ломаю голову, пытаясь понять, почему не работает has_object_permission, ведь в документации сказано, что этот метод должен выполняться с get_object. В чем может быть причина?

@permission_classes([HasViewObjectPermission])
class IndividualDetailsView(RetrieveAPIView):
    serializer_class = IndividualSerializer
    lookup_url_kwarg = "pk"

    def get_object(self):
        pk = self.kwargs.get(self.lookup_url_kwarg)
        return Individual.objects.get(pk=pk)


class HasViewObjectPermission(permissions.BasePermission):

    def has_object_permission(self, request, view, obj):
        return False

Похоже, что вы используете Django Rest Framework. DRF поддерживает разрешения на уровне объектов, но если вы переопределите метод get_object, вы должны вручную вызвать метод check_object_permissions.

Из документации DRF:

Если вы пишете собственные представления и хотите обеспечить разрешения на уровне объектов, или если вы переопределяете метод get_object в общем представлении, тогда вам нужно будет явно вызвать метод .check_object_permissions(request, obj) в представлении в момент получения объекта.

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