【发布时间】:2020-10-14 04:47:34
【问题描述】:
我需要为请求用户的不同类型的操作检查不同类型的权限。例如get 权限只需要[IsAuthenticated] 但当用户请求perform_create 方法时。我想实现另一个权限是CanCreateProject
permissions.py
class CanCreateProject(permissions.BasePermission):
def has_object_permission(self, request, view, obj):
if request.user.is_superuser:
return True
else:
return request.user.profile_limitation.can_create_project
views.py
class ProjectView(ModelViewSet):
serializer_class = ProjectSerializer
permission_classes = [IsAuthenticated]
def get_queryset(self):
queryset = Project.objects.all()
organization = self.request.user.organization
query_set = queryset.filter(organization=organization)
return query_set
def perform_create(self, serializer):
self.permission_classes = [CanCreateProject] ## here
project = self.request.data["project_name"]
path = self.request.data["project_name"]
organization = self.request.data["organization"]
serializer.save(project_name=project, project_path=path, organization=organization)
我怎样才能运行CanCreateProject 方法,只为请求perform_create 方法。
【问题讨论】:
标签: django django-rest-framework