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