2016-09-15 15 views
0

作成アクション(投稿)のパーミッションを設定したいと思います。そして私はそれをするために熱い知らない。rest_frameworkで作成アクションの権限を設定する方法

これは私のコードです:ビューでpermissions.py

class IsAdmin(permissions.BasePermission): 
    def has_object_permission(self, request, view, category): 
     if request.user.role == "admin": 
      return request.user.role == "admin" 
     return False 

クラスCategoryViewSet(viewsets.ModelViewSet):

queryset = Category.objects.all() 
serializer_class = CategorySerializer 

def get_permissions(self): 
    if self.request.method in permissions.SAFE_METHODS: 
     return (permissions.DjangoModelPermissions(),) 
    return (permissions.IsAuthenticated(), IsAdmin(),) 

答えて

0

ちょうど上permission_classesを設定ビューセットは直接:

私は、

def has_permission(self, request, view): 
    if request.user.role == "admin": 
     return request.user.role == "admin" 
    return False 

それは簡単です:このメソッドの

def has_object_permission(self, request, view, category): 
    if request.user.role == "admin": 
     return request.user.role == "admin" 
    return False 

:すでに、私はちょうど私が私のpermissions.pyファイルの変更、方法をした、それを解決した10

class CategoryViewSet(viewsets.ModelViewSet): 

    queryset = Category.objects.all() 
    serializer_class = CategorySerializer 
    permission_classes = [IsAccountAdminOrReadOnly] 
+0

あなたが見ることができるなら、それはカスタム管理者のために定義されているstandarです:request.user.role == "admin" –

+0

したがって、読み取り専用のチェックを自分の許可クラス(そして 'IsAdminOrReadOnly'のような名前に変更してください)、viewset.permission_classesにそのクラスを使用してください。 – wim

+0

すでに解決済みです... has_permissionメソッドの' has_object_permission(self、request、view、category) (self、request、view) 'とそれは動作する必要があります...;) –

0

あまり複雑すぎる

関連する問題