Метод 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) в представлении в момент получения объекта.