Почему при отправке запроса на детализацию CustomUser в API Blog возникает ошибка?

У меня есть два Blog API в Django Rest Framework. Один использует стандартную модель пользователя Django, а другой - CustomUser. Аутентификация работает хорошо в обоих случаях. У меня настроены одинаковые сериализаторы, наборы представлений и маршрутизаторы. Конечная точка, возвращающая коллекцию постов и пользователей, работает так же хорошо, как и конечная точка для одного поста. Также и конечная точка для одного пользователя работает только при использовании стандартной модели пользователя Django. Однако когда я пытаюсь получить доступ к одному CustomUser, я получаю эту ошибку:

AttributeError at /api/v1/users/3/
'CustomUser' object has no attribute 'author'
Request Method: GET
Request URL:    http://127.0.0.1:3412/api/v1/users/3/
Django Version: 5.1.2
Exception Type: AttributeError
Exception Value: 'CustomUser' object has no attribute 'author'
Exception Location: C:\Users\Names\OneDrive\my_apps\django_apps\blog_API\api\permissions.py, line 16, in has_object_permission
Raised during:  api.views.CustomUserViewSet

Исключение возникает в последней строке:

from rest_framework import permissions

class IsAuthorOrReadOnly(permissions.BasePermission):
    """
    Object-level permission to only allow authors of an object to edit it.
    Assumes the model instance has an `author` attribute.
    """

    def has_object_permission(self, request, view, obj):
        if request.method in permissions.SAFE_METHODS:
            return True
        return obj.author == request.user

Вот мой CustomUserViewset:

from rest_framework import viewsets

from users.models import CustomUser
from .serializers import CustomUserSerializer
from .permissions import IsAuthorOrReadOnly


class CustomUserViewSet(viewsets.ModelViewSet):
    """Viewset for Custom User Object."""
    queryset = CustomUser.objects.all()
    serializer_class = CustomUserSerializer
    permission_classes = (IsAuthorOrReadOnly,)

Я посмотрел на место ошибки и попробовал отладку печати для печати объекта User, и в обоих случаях (модель Default User и модель CustomUser) ничего не выводится. Но модель Default User работает хорошо и возвращает данные об одном пользователе. Я также попытался распечатать свой набор запросов, и он правильно возвращает мой CustomUser.

Я хочу получить доступ к одному CustomUser из конечной точки, как это можно сделать с помощью стандартного User в Dango. Мои модели Post и CustomUser правильно сериализованы, и обе коллекции можно увидеть из их конечных точек. PostDetail также работает хорошо. Я буду рад предоставить дополнительные разъяснения, если это необходимо. Спасибо...

Удаление permission_classes = (IsAuthorOrReadOnly,) из моего CustomUserViewSet устранило проблему.

Не знаю точно, почему, но предполагаю, что набору представлений не понравилось повторение permission_classes как в PostViewSet, так и в CustomUserViewSet.

Вернуться на верх