Разрешение для владельца учетной записи пользователя
Я создаю 2 разрешения для владельца учетной записи пользователя и владельца квартиры. Хотя у них одинаковый код, владелец учетной записи пользователя не работает.
permissions.py
class IsOwnerUserOrReadOnly(permissions.BasePermission):
def has_object_permission(self, request, view, obj):
if request.method in permissions.SAFE_METHODS:
return True
return obj.username == request.user # Not Work
class IsOwnerApartmentOrReadOnly(permissions.BasePermission):
def has_object_permission(self, request, view, obj):
if request.method in permissions.SAFE_METHODS:
return True
return obj.seller == request.user # Work OK
views.py
class UserViewSet(viewsets.ModelViewSet):
queryset = User.objects.all()
serializer_class = UserSerializer
permission_classes = [
permissions.IsAuthenticatedOrReadOnly, IsOwnerUserOrReadOnly]
class ApartmentViewset(viewsets.ModelViewSet):
queryset = Apartment.objects.filter(issold=False).order_by('-timestamp')
serializer_class = ApartmentSerializer
# Set permission for only user owner apartment can edit it.
permission_classes = [
permissions.IsAuthenticatedOrReadOnly, IsOwnerApartmentOrReadOnly]
Я думаю, что возвращаемое выражение первого класса разрешения неверно. Оно должно быть obj
, а не obj.username
, потому что request.user
является экземпляром модели User.
class IsOwnerUserOrReadOnly(permissions.BasePermission):
def has_object_permission(self, request, view, obj):
if request.method in permissions.SAFE_METHODS:
return True
return obj == request.user # Not Work