Я получаю 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']