gpt4 book ai didi

django rest 权限允许 IsAdmin 和自定义权限

转载 作者:行者123 更新时间:2023-12-03 15:45:58 26 4
gpt4 key购买 nike

我有一个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”时,我尝试了以下方法,但在使用时仍然无法正常工作,或者,
class MemberDetail(generics.RetrieveUpdateDestroyAPIView):
queryset = members.objects.all()
serializer_class = MemberSerializer
permission_classes = (Or(permissions.IsAdminUser,IsOwner))

如果我使用 Or 它在运行时因错误而失败,因为“'条件'对象不可迭代”

最佳答案

自 DRF 3.9 ,您可以使用逻辑按位运算符 |& ( ~ 已添加到 3.9.2 中)。

the docs 中所述你只需要

    permission_classes = (permissions.IsAdminUser|IsOwner,)

关于django rest 权限允许 IsAdmin 和自定义权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45563194/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com