#django #django-rest-framework
#django #django-rest-framework
Вопрос:
Идея в том, что пользователь, не являющийся пользователем, может получить только представление (список, извлечение). Пользователь с правами доступа может ПОЛУЧАТЬ, ПУБЛИКОВАТЬ, ИСПРАВЛЯТЬ, удалять.
Как я могу сделать это в пользовательском разрешении?
мой взгляд:
class BookViewSet(viewsets.ModelViewSet):
permission_classes = (IsAuthenticated,)
serializer_class = serializers.BookSerializer
def get_queryset(self):
return Book.objects.filter(user=self.request.user)
Ответ №1:
Вы можете сделать это, расширив базовый класс permissions.BasePermission
from rest_framework import permissions
class IsAuthorOrReadOnly(permissions.BasePermission):
def has_object_permission(self, request, view, obj):
if request.method in permissions.SAFE_METHODS:
return True
return obj.user == request.user
а затем используйте это как класс разрешений permission_classes =(IsAuthorOrReadOnly,)