has_object_permission 未调用

Kis*_*war 6 django django-permissions django-rest-framework

我查看了关于同一主题的类似问题,我认为我遵循了为has_object_permission.

这就是我在我的设置中所拥有的。

REST_FRAMEWORK = {
    
    'DEFAULT_PERMISSION_CLASSES': [
        'rest_framework.permissions.IsAuthenticated',
        'users.permissions.CanAccessData', # this is my custom class
    ],    
    ... 
}
Run Code Online (Sandbox Code Playgroud)

这是我的权限类

class CanAccessData(permissions.BasePermission):
    message = 'You do not have permission to perform this action.'

    def has_permission(self, request, view):
        print "has_permission`"
        return True

    def has_object_permission(self, request, view, obj):
        print "has_object_permission"
        return False
Run Code Online (Sandbox Code Playgroud)

这是我的视图结构:

class CompleteList(generics.ListCreateAPIView):
    permission_classes = (CanAccessData,)
    serializer_class = SomeSerializer
    model = Some
    filter_backends = (filters.OrderingFilter, filters.SearchFilter)
    ordering_fields = (tuple of Some fields)
    search_fields = ordering_fields
    ordering = ('-create_date')
Run Code Online (Sandbox Code Playgroud)

仍然has_object_permission没有被调用,has_permission尽管被调用。

ikk*_*kuh 5

has_object_permission不会调用列表视图。该文件说,以下情况:

另请注意,通用视图只会检查检索单个模型实例的视图的对象级权限。如果您需要对列表视图进行对象级过滤,则需要单独过滤查询集。有关更多详细信息,请参阅过滤文档。