Django Rest Framework ListCreateAPIView没有检查has_object_permissions?

时间:2018-04-04 22:51:26

标签: python django django-rest-framework

我现在已经试图解决这个问题差不多整整一天了,我似乎无法弄清楚has_object_permission methodListCreateAPIView被调用的原因在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文件中,无论如何,此方法都会一直运行。

谢谢!

1 个答案:

答案 0 :(得分:0)

调用has_object_permission对列表没有意义。它适用于单个实例。

您想要的是过滤您的对象列表,以便它只留下用户具有某些权限的对象。 DjangoObjectPermissionsFilter这样做但需要django-guardian。您可能会得到类似的结果,但创建自己的过滤类(sources for DjangoObjectPermissionsFilter