Я пытаюсь создать функцию has_object_permission, которая находится в файле permissions.py
в пользовательском классе:
class IsOwnerOrAdmin(permissions.BasePermission):
def has_object_permission(self, request, view, obj):
print("has object permissions statement")
return obj.owner == request.user
def has_permission(self, request, view):
print("has permissions statement")
return request.user and request.user.is_authenticated
Мой набор представлений выглядит следующим образом:
class SchoolViewSet(viewsets.ModelViewSet):
queryset = School.objects.all()
serializer_class = SchoolSerializer
permission_classes = [IsOwnerOrAdmin,
IsOwnerOrAdmin.has_object_permission()]
...
Iполучить следующую ошибку при вызове / schools / endpoint:
TypeError: has_object_permission() missing 4 required positional
arguments: 'self', 'request', 'view', and 'obj'
Однако has_permissions работает нормально, и мне не нужно явно вызывать его в моем массиве allow_classes. Это просто называется. Как мне передать эти аргументы? Я делаю это правильно? Я попробовал несколько вариантов прохождения себя, прохождения SchoolViewSet, прохождения obj=queryset
и т. Д. Не был уверен, что это правильно. Не удалось найти именно то, что мне нужно, чтобы исправить это в интернете.
Обновление Как мне изменить код для вызова has_object_permission так же, как has_permission вызывается автоматически?