Django REST Framework Token Auth request.user возвращает пустое значение

Я пытаюсь создать REST API, который вставляет ID в модель favorites many to many. Но когда я пытаюсь получить request.user, он возвращает пустоту. Я использую метод TokenAuth и отправляю ключ в заголовке Authentication.

Здесь вы видите мой Viewset. ["favorites"] отправляется внутри тела POST запроса.

class FavoriteViewSet(view sets.ModelViewSet):
    queryset = Profile.objects.all()
    serializer_class = FavoriteSerializer
    permission_classes = [IsAuthenticated]
    authentication_classes = [TokenAuthentication]

    def post(self):
        data = request.data
        profile = Profile.objects.get(user=self.request.user)
        profile.favorites.add(data["favorites"])
        return Response(status=status.HTTP_201_CREATED)

Мой сериализатор:

class FavoriteSerializer(serializers.ModelSerializer):
    class Meta:
        model = Profile
        fields = '__all__'
        depth = 1

Моя Profile модель:

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    favorites = models.ManyToManyField(Receipt)

    def __str__(self):
        return self.id

Моя ошибка:

IntegrityError at /v1/favorites/
(1048, "Column 'user_id' cannot be null")

Функция post должна иметь в качестве параметров self и request, поэтому она будет выглядеть следующим образом:

def post(self, request):
        data = request.data
        profile = Profile.objects.get(user=request.user)
        profile.favorites.add(data["favorites"])
        return Response(status=status.HTTP_201_CREATED)

Вы можете найти больше информации на Django Rest Framework

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