为了账号安全,请及时绑定邮箱和手机立即绑定

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)方法可以执行,但又怎么判断操作的是自己所属呢?

正在回答

1 回答

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

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


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

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信