I have a custom user for authentication and want to create a serializer class for it my custom user's model is like this :
class User (AbstractUser):
bio = models.TextField(max_length=500, blank=True)
birth_date = models.DateField(null=True, blank=True)
image=models.FileField(null=True , blank=True)
and my serializer is :
class UserSerializer (serializers.ModelSerializer):
class Meta:
model = User
fields = ('username' ,'email' ,'password' ,'firstname' , 'last name' )
how could I mention that the password field is a password and its content must be hashed?
to hash password, call:
make_password(origin_password)
example serializers.py:
from rest_framework import serializers
from django.contrib.auth.models import User
from django.contrib.auth.hashers import make_password
class UserSerializer(serializers.HyperlinkedModelSerializer):
password = serializers.CharField(
write_only=True,
required=True,
help_text='Leave empty if no change needed',
style={'input_type': 'password', 'placeholder': 'Password'}
)
class Meta:
model = User
fields = ('url', 'username', 'email', 'password')
def create(self, validated_data):
validated_data['password'] = make_password(validated_data.get('password'))
return super(UserSerializer, self).create(validated_data)