Ответ на мой вопрос.
Нужно было сохранять пароль при помощи функции .set_password(), вот такой код в сериалайзере:
class CustomUserCreateSerializer(ModelSerializer):
class Meta:
model = CustomUser
fields = ('email',
'username',
'first_name',
'last_name',
'password')
extra_kwargs = { # указываем обязательные поля для заполнения
'first_name': {'required': True},
'last_name': {'required': True},
'username': {'required': True}
}
def create(self, validated_data):
user = CustomUser (
email=validated_data['email'],
username=validated_data['username'],
first_name=validated_data['first_name'],
last_name=validated_data['last_name']
)
user.set_password(password) # хэшируем пароль
user.save() # сохраняем в БД
return user
После этого заработает получение токена. Но есть еще нюанс, если для авторизации в админке в модели используется email, то получение токена тоже нужно настроить по email, иначе будет та же ошибка:
Невозможно войти с предоставленными учетными данными.