2 回答

TA貢獻1804條經驗 獲得超3個贊
實際上,這兩種權限都可以合并為一個。例如像這樣更新權限:
class CanDeleteUser(permissions.BasePermission):
def has_object_permission(self, request, view, obj):
if request.method in permissions.SAFE_METHODS:
return False
return obj.user == request.user or ob.post.administrator.filter(pk=request.user.pk).exists()
在這里,我正在檢查request.useris或檢查附加變量obj.user的對象的管理員。showcaseobj
現在我只檢查collaborator.
class CollaboratorDeleteView(APIView):
'''
Allow Administrators to delete a collaborator to a showcase
or allow the collaborator user to be able to delete himself
'''
permission_classes = [CanDeleteUser]
def delete(self, request, pk):
collaborator = get_object_or_404(Collaborator, pk=pk)
try:
self.check_object_permissions(request, collaborator)

TA貢獻1818條經驗 獲得超7個贊
您可以permission_classses使用 & (and)、| 添加任意數量的權限來賦予屬性 (or) 和 ~ (not) 符號 ( doc ):
class CollaboratorDeleteView(APIView):
'''
Allow Administrators to delete a collaborator to a showcase
or allow the collaborator user to be able to delete himself
'''
permission_classes = [IsAdmin|IsUser]
這兩個權限現在都可以使用OR邏輯。
添加回答
舉報