gpt4 book ai didi

permissions - 在 ListAPIView 中仅查看所有者的数据

转载 作者:行者123 更新时间:2023-12-04 12:26:27 25 4
gpt4 key购买 nike

我有一个派生自 ListAPIView 的 View ,具有以下权限:

permission_classes = (permissions.IsAuthenticated, IsOwnerOrSuperuser, )

IsOwnerOrSuperuse 是这样定义的:

class IsOwnerOrSuperuser(permissions.BasePermission):

def has_object_permission(self, request, view, obj):
return obj.user == request.user or request.user.is_superuser

(与教程非常相似)

现在,当普通用户查询我的 View 时,它可以看到每个人的对象。权限不是应用于列表中的每个对象吗?我如何才能以最小的开销强制执行此类行为?

谢谢

最佳答案

不,has_object_permission 不适用于列出和创建端点,仅在只有单个实例的情况下检索、更新和删除。要过滤列表,您应该使用 get_queryset 来过滤对象。

class BlogList(generics.ListAPIView):
serializer_class = BlogSerializer
permission_classes = (IsOwnerOrSuperuser,)

def get_queryset(self):
user = self.request.user
return Blog.objects.filter(user=user)

要申请更多权限,您需要实现.has_permission(self, request, view)....

关于permissions - 在 ListAPIView 中仅查看所有者的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22218660/

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