问答详情
源自:5-3 DRF的权限控制

drf 在viewsets中对象级别的权限控制方法为什么不执行?

class IsLeaderAndOwnerPermission(permissions.BasePermission):
   def has_object_permission(self, request, view, obj):
      print(request.user)
      # if request.method in permissions.SAFE_METHODS:
      #  return True
      '''判断是否是管理者且管理自己及下属'''
      # return obj.user == request.user

只有has_permission(self,request,view)方法可以执行,但又怎么判断操作的是自己所属呢?

提问者:归来也无风雨也无晴 2020-12-08 14:01

个回答

  • 归来也无风雨也无晴
    2020-12-08 14:10:06

    请注意,通用视图将检查适当的对象级别权限,但是,如果您要编写自己的自定义视图,则需要确保自己检查对象级别权限。您可以通过self.check_object_permissions(request, obj)在拥有对象实例后从视图中进行调用来实现。APIException如果任何对象级权限检查失败,则此调用将引发适当的调用,否则将简单地返回。

    还要注意,通用视图将仅检查对象级权限以获取检索单个模型实例的视图。如果需要列表视图的对象级过滤,则需要单独过滤查询集。有关更多详细信息,请参见过滤文档


    我明白了,但过滤依然 不懂,付费课程可以学到吗?