我现在已经试图解决这个问题差不多整整一天了,我似乎无法弄清楚has_object_permission method
在ListCreateAPIView
被调用的原因在DRF
中调用。我已经尝试了所有可以找到的解决方案,但根据文档check_object_permissions
已经在本课程中调用过。
我知道它必须是我想念的愚蠢。代码片段如下,请帮助!
views.py:
from accountability.models import AccountabilityItem
from accountability.serializers import AccountabilityItemSerializer
from rest_framework import generics
from .permissions import InGroup
class AccountabilityItemListCreate(generics.ListCreateAPIView):
queryset = AccountabilityItem.objects.all()
serializer_class = AccountabilityItemSerializer
permission_classes = (InGroup,)
permissions.py:
from rest_framework import permissions
class InGroup(permissions.BasePermission):
"""
Custom permission to only allow owners of an object to edit it.
"""
def has_object_permission(self, request, view, obj):
print('Checking for object')
return False
另一方面,我已将has_permission
方法添加到permissions.py
文件中,无论如何,此方法都会一直运行。
谢谢!
答案 0 :(得分:0)
调用has_object_permission
对列表没有意义。它适用于单个实例。
您想要的是过滤您的对象列表,以便它只留下用户具有某些权限的对象。 DjangoObjectPermissionsFilter这样做但需要django-guardian。您可能会得到类似的结果,但创建自己的过滤类(sources for DjangoObjectPermissionsFilter)