DRF не хэширует пароль

Вот модель:

class CustomerStatus(models.TextChoices):
    ACTIVE = 'ACT', 'Active'
    EXPIRED = 'EXP', 'Expired'
    REVOKED = 'REV', 'Revoked'


class Customer(models.Model):
    email = models.EmailField(max_length=254, unique=True)
    password = models.CharField(max_length=128)
    created = models.DateTimeField(auto_now_add=True)
    status = models.CharField(
        max_length=3, choices=CustomerStatus.choices, default=CustomerStatus.ACTIVE
    )

и сериализатор:

class CustomerSerializer(serializers.ModelSerializer):
    class Meta:
        model = Customer
        fields = ['email', 'password', 'created', 'status']
        extra_kwargs = {'password': {'write_only': True}}

Но я хочу хэшировать пароль, и это не работает. Я проверяю поле в Admin сайта и оно хранится в plain text.

Я пробовал следующее:

def create(self, validated_data):
        validated_data['password'] = make_password(validated_data['password'])
        return super(CustomerSerializer, self).create(validated_data)

и вот этот:

def create(self, validated_data):
        validated_data['password'] = make_password(validated_data['password'])
        return super().create(validated_data)

и вот этот:

customer = Customer.objects.create(
            email=validated_data['email'],
            password=make_password(validated_data['password']),
        )

        return customer

У меня нет выбора.

Вернуться на верх