В наборе представлений бронирования я должен вывести список всех бронирований, когда администратор входит в систему, а обычный пользователь может видеть объекты, созданные этим пользователем, используя id =pk.

приведены views.py и models.py

Вот в моих "class BookViewSet(viewsets.ModelViewSet)" и "class BookingRetrtieveUpdateDestroyAPIView(generics.RetrieveUpdateDestroyAPIView)" Мне нужно создать функциональность, указанную в постановке задачи.

Заявление о проблеме

  1. for (class BookViewSet(viewsets.ModelViewSet)))
    (a) Если администратор вошел в систему отображает все бронирования всех пользователей и может создавать бронирования.
    (b) Если обычный пользователь вошел в систему отображает записи, созданные этим пользователем, и может также создать пользователя.
    (c) во время тестирования API как использовать токен simple-jwt для проверки пользователя, поскольку я добавил разрешение для контроля доступа.

    .
  2. for (class BookingRetrtieveUpdateDestroyAPIView(generics.RetrieveUpdateDestroyAPIView)))

    (a) если администратор вошел в систему функциональность get/put/delete для каждого бронирования пользователя.
    (b) если обычный пользователь вошел в систему получить/вывести/удалить записи бронирования для этого конкретного пользователя.

Примечание: Я пытался сделать это без этой функциональности и просто используя пользовательские разрешения, но это не работает, возможно, потому что он не может получить идентификацию пользователя.

permissions.py

from django.contrib.auth import get_user_model
from rest_framework.permissions import BasePermission

User = get_user_model()


class IsUserOrIsAdmin(BasePermission):
    """Allow access to the respective User object and to admin users."""

    def has_object_permission(self, request, view, obj):
        return (request.user and request.user.is_staff) or (
            isinstance(obj, User) and request.user == obj
        )
Вернуться на верх