Вы должны переопределить метод create()
сериализатора на пароль ha sh перед сохранением нового объекта пользователя. Для этого вы можете использовать set_password
:
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('username', 'password')
def create(self, validated_data):
user = User(
username=validated_data['username']
)
user.set_password(validated_data['password'])
user.save()
return user
В противном случае User.password будет храниться в БД без хеширования, что небезопасно.
Также вы можете использовать create_user
метод, который вызывает set_password
по умолчанию:
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('username', 'password')
def create(self, validated_data):
return User.objects.create_user(**validated_data)