У меня есть представление с настраиваемым действием, которое должно иметь настраиваемое разрешение «IsRightUser». Однако has_object_permission
этого никогда не вызывается, хотя я пытаюсь получить доступ к объекту с self.get_object()
на мой взгляд.
class MyView(mixins.ListModelMixin, viewsets.GenericViewSet):
serializer_class = MySerializer
lookup_field = 'uuid'
queryset = MyObject.objects.all()
@action(methods=['get'], detail=True)
@permission_classes([IsRightUser])
def groups(self, request, uuid=None):
# prints [<class 'rest_framework.permissions.IsAuthenticated'>]
print(self.permission_classes)
my_object = self.get_object()
groups = Group.objects.filter(my_object=my_object)
serializer = MySerializer(groups, many=True)
return Response(serializer.data)
Здесь вы можете увидеть мое пользовательское разрешение, которое никогда не вызывается.
class IsRightUser(BasePermission):
def has_object_permission(self, request, view, obj):
# never called
return True
Когда я использую permission_classes = [IsRightUser]
в моем представлении (то есть непосредственно под полем lookup_field) это работает (к сожалению, это неосуществимо для меня).
Любая помощь очень ценится.