Я получаю Error: create_user() missing 1 required positional argument: 'username'

Я создаю REST API для профилей. Я получаю ошибку в строке 30 serializers.py, т.е. пароль.

Это models.py

    def create_user(self,email,name,password=None):
        """Create a new user profile"""
        if not email:
            raise ValueError('User must have an email address')
        
        email = self.normalize_email(email) # normalize_email() is a helper function that converts email  1st to lowercase
        user = self.model(email=email,name=name) # self.model is the UserProfileManager class

        user.set_password(password) # set_password() is a helper function that hashes the password
        user.save(using=self.db)# save() is a helper function that saves the user to the database

        return user

 

Это serializers.py



class UserProfileSerializer(serializers.ModelSerializer): 

    def create(self,validated_data):
        """Create and return a new user"""
        user = models.UserProfile.objects.create_user(
            email=validated_data['email'],
            name=validated_data['name'],
            password=validated_data['password'],
        )

        return user  

В модели AbstractUser есть поле USERNAME_FIELD, и его значение по умолчанию - 'username'. И поле username не должно быть null в базе данных. Если вы не хотите использовать поле username, а предпочитаете использовать поле name, вы можете просто изменить это поле, установив USERNAME_FIELD вручную.

class YourUserModel(AbstractUserModel):
    ...

    USERNAME_FIELD = 'email'

    def create_user(...):
        ...

Я думаю, что REQUIRED_FIELDS должен включать поле username, то есть email в вашем проекте.

REQUIRED_FIELDS = ['name', 'email']
Вернуться на верх