使用django-rest-framework设置对象级权限

时间:2016-12-19 20:09:49

标签: python django rest django-rest-framework django-guardian

尝试使用django-rest-framework管理django-guardian对象级权限,这是最干净和最可能的。

我想在执行POST时向发出请求的用户分配对象的读取权限(module.view_object)。

我基于班级的观点:

class ObjectList(ListCreateAPIView):
  queryset = Object.objects.all()
  serializer_class = ObjectSerializer
  filter_backends = (DjangoObjectPermissionsFilter,)
  # MyObjectPermissions inherit from DjangoObjectPermissions and just 
  # add the 'view_model' permission
  permission_classes = (MyObjectPermissions,)

  def perform_create(self, serializer):
    serializer.save(owner=self.request.user)

正如django-rest-framework documentation中所述,我已经超载perform_create以便将用户传递给序列化程序。

但是如何在序列化程序中分配权限(使用guardian.shortcuts.assign_perm)。除了覆盖save方法以手动分配权限之外,没有其他办法吗?是不是有某种标准机制来管理这种常见行为?

1 个答案:

答案 0 :(得分:2)

您可以在ViewSet()的perform_create()方法中分配权限。