我正在尝试创建一个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一样?