2 回答
TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超3個(gè)贊
實(shí)際上,這兩種權(quán)限都可以合并為一個(gè)。例如像這樣更新權(quán)限:
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的對(duì)象的管理員。showcaseobj
現(xiàn)在我只檢查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貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超7個(gè)贊
您可以permission_classses使用 & (and)、| 添加任意數(shù)量的權(quán)限來(lái)賦予屬性 (or) 和 ~ (not) 符號(hào) ( 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]
這兩個(gè)權(quán)限現(xiàn)在都可以使用OR邏輯。
添加回答
舉報(bào)
