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
У меня нет выбора.