А, очень весело получилось, я, собственно, чего-то не знал видимо или что-то просмотрел. У меня используется ModelViewSet, весь код вот
class CourseViewSet(viewsets.ModelViewSet):
queryset = Course.objects.filter(is_deleted=False)
serializer_class = CourseSerializer
swagger_tags = ["Course"]
def create(self, request, *args, **kwargs):
data = request.data
course = Course.objects.create(
name=data["name"],
description=data["description"],
information=data["information"],
author_id=data["author"]
)
course.save()
tags = set(data["tags"])
for tag in tags:
created_tag = Tags.objects.get_or_create(name=tag)[0]
course.tags.add(created_tag.id)
return Response(status=status.HTTP_201_CREATED)
def partial_update(self, request, *args, **kwargs):
course = Course.objects.get(id=int(kwargs["pk"]))
if request.user.id == course.author.id:
return super().partial_update(request, *args, **kwargs)
return Response(status=status.HTTP_403_FORBIDDEN)
Не важно, что он делает, важно, что при добавлении
authentication_classes = [JWTAuthentication]
всё начинает работать. При том, что в rest_framework указан дефолтный класс, тут всё равно надо указывать его...
То есть окончательно класс сейчас выглядит так
class CourseViewSet(viewsets.ModelViewSet):
queryset = Course.objects.filter(is_deleted=False)
serializer_class = CourseSerializer
authentication_classes = [JWTAuthentication]
swagger_tags = ["Course"]
...