Фреймворк django rest не может распознать User, определенный как внешний ключ

Я пытаюсь сохранить информацию о профиле пользователя в модели django. Модель определена следующим образом

class UserProfile(models.Model): 
  user = models.ForeignKey(User, on_delete=models.CASCADE)
  reg_date = models.DateTimeField(auto_now_add=True, blank=True)
  name = models.CharField(max_length=30, blank=True)
  family = models.CharField(max_length=30,  blank=True)
  phoneNumber = models.CharField(max_length=20,  blank=True)

  def __str__(self) :
    return self.name + self.family

Сериализатор для модели определяется как:

class UserProfileSerializer(serializers.ModelSerializer): 
  class Meta: 
    model= UserProfile
    fields = ['user', 'reg_date', 'name', 'family', 'phoneNumber']

и вид следующий:

class UserProfileView(viewsets.ViewSet): 
  def create(self, request): 
    UserProfile.objects.create(user = request.user)

Я отправляю пост-запрос с помощью axios следующим образом:

const a = await ProfileAPI.post('',
        {
          headers: {
            'Authorization': mytoken
          }
        })

, в котором mytoken - это токен вошедшего пользователя, предоставленный dj-rest-auth API. Хотя токен в порядке и UserProfileView выполняется запросом, я получил следующую ошибку от django rest:

ValueError: Cannot assign "<django.contrib.auth.models.AnonymousUser object at 0x000001F069C59190>": "UserProfile.user" must be a "User" instance.

Я что-то упустил? Есть ли какая-то проблема с моим запросом или видом? Пожалуйста, помогите мне решить эту проблему

Как определяется аутентификация

Схемы аутентификации всегда задаются в виде списка классов. REST framework попытается аутентифицироваться с каждым классом в списке, и установит request.user и request.auth, используя возвращаемое значение первого класса, который успешно аутентифицируется.

Если ни один класс не аутентифицируется, request.user будет установлен на экземпляр django.contrib.auth.models.AnonymousUser, а request.auth будет установлен на None.

Значение request.user и request.auth для неаутентифицированных запросов может быть изменено с помощью параметров UNAUTHENTICATED_USER и UNAUTHENTICATED_TOKEN.

Настройки

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework.authentication.BasicAuthentication',
        'rest_framework.authentication.SessionAuthentication',
    ]
}

Виды

from rest_framework.authentication import SessionAuthentication, BasicAuthentication
from rest_framework.permissions import IsAuthenticated
from rest_framework.response import Response
from rest_framework.views import APIView

class ExampleView(APIView):
    authentication_classes = [SessionAuthentication, BasicAuthentication]
    permission_classes = [IsAuthenticated]

    def get(self, request, format=None):
        content = {
            'user': str(request.user),  # `django.contrib.auth.User` instance.
            'auth': str(request.auth),  # None
        }
        return Response(content)

Добавьте в settings.py AUTH_USER_MODEL = '(app name).UserProfile'

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