Разрешение для владельца учетной записи пользователя

Я создаю 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]

enter image description here enter image description here

Я думаю, что возвращаемое выражение первого класса разрешения неверно. Оно должно быть 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
Вернуться на верх