Как избавиться от ошибки "UNIQUE constraint failed: area_student.user_id"?

При попытке создания нового студента выдает ошибку:
IntegrityError at /auth/users/
UNIQUE constraint failed: area_student.user_id

На сколько я понимаю, у меня два раза пытается создать пользователся и проблема в строке
user = UserSerializer.create(UserSerializer(), validated_data=user_data)
Но как мне иначе при создании нового студента связать его с юзером?
Пример кода представлени ниже. Для аутентификации использую djoser.

serializers.py:

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = ('username', 'password', 'first_name', 'last_name', 'email')
        extra_kwargs = {'password': {'write_only': True}}

    def create(self, validated_data):
        user = User(
            username=validated_data['username'],
            first_name=validated_data['first_name'],
            last_name=validated_data['last_name'],
            email=validated_data['email'],            
        )
        user.set_password(validated_data['password'])
        user.save()
        return user
        

class StudentSerializer(serializers.ModelSerializer):
    user = UserSerializer(required=True)

    class Meta:
        model = Student
        fields = '__all__'

    def create(self, validated_data):
        user_data = validated_data.pop('user')
        user = UserSerializer.create(UserSerializer(), validated_data=user_data)
        student, created = Student.objects.update_or_create(user=user_data,
                            course=validated_data.pop('course'))
        return student

models.py:

class Student(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    course = models.ManyToManyField("Course", 
                                    verbose_name='Прослушиваемые курсы')

    class Meta:
        verbose_name = 'Ученик'
        verbose_name_plural = 'Ученики'
    
    def __str__(self):
        full_name = f"{self.user.first_name} {self.user.last_name}"
        return full_name

Ответы (0 шт):