【发布时间】:2018-01-15 17:18:17
【问题描述】:
我有一个views.py如下,
from webapi.permissions import IsOwner
class MemberDetail(generics.RetrieveUpdateDestroyAPIView):
queryset = members.objects.all()
serializer_class = MemberSerializer
permission_classes = (permissions.IsAdminUser,IsOwner)
以下是自定义权限,用于检查用户是否是webapi.permissions中对象的所有者,
class IsOwner(permissions.BasePermission):
def has_object_permission(self, request, view, obj):
return obj.owner == request.user
现在的问题是检查他是否是管理员用户并授予更新/删除权限,但如果所有者是用户,它实际上应该授予编辑他的数据的权限,但在这种情况下它失败了。
在看到问题“Django Rest Framework won't let me have more than one permission”时,我尝试如下,但在使用 Or 时仍然无法正常工作,
class MemberDetail(generics.RetrieveUpdateDestroyAPIView):
queryset = members.objects.all()
serializer_class = MemberSerializer
permission_classes = (Or(permissions.IsAdminUser,IsOwner))
如果我使用 Or 它在运行时失败并出现错误,因为“'Condition' object is not iterable”
【问题讨论】:
标签: django django-rest-framework django-authentication