获取has_object_permission()缺少4个必需的位置参数:“ self”,“ request”,“ view”和“ obj”

我正在尝试创建一个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,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()]
    ...

调用/ schools /端点时出现以下错误:

TypeError: has_object_permission() missing 4 required positional 
arguments: 'self','request','view',and 'obj'

但是,has_permissions可以正常工作,我不必在我的Permission_classes数组中显式调用它。它只是被调用。如何传递这些论点?我这样做正确吗?我尝试了一些传递自我,传递SchoolViewSet,传递obj=queryset等的变体。不确定是否正确。找不到确切的解决方案,可以在互联网上解决。

更新 我如何更改代码以调用has_object_permission,就像自动调用has_permission一样?

zyf12345678 回答:获取has_object_permission()缺少4个必需的位置参数:“ self”,“ request”,“ view”和“ obj”

permission_classes定义不正确。它应该只包括定制的类。

class SchoolViewSet(viewsets.ModelViewSet):
    queryset = School.objects.all()
    serializer_class = SchoolSerializer
    permission_classes = [IsOwnerOrAdmin]
本文链接:https://www.f2er.com/3133444.html

大家都在问