Я следую учебнику по DRF, и там я столкнулся с «сериализатором». Почти все было легко понять, кроме этого - когда вы переопределяете поле, которое уже находится в вашем подключении (по полю модели в метаклассе).
Ниже приводится сериализатор модели 'user'
class RegistrationSerializer(serializers.ModelSerializer):
password = serializers.CharField(
max_length = 128,
min_length=8,
write_only=True
)
token = serializers.CharField(max_length=255, read_only=True)
class Meta:
model = User
def create(self, validated_data):
return User.objects.create_user(**validated_data)
И другой код здесь, соответствующая модель сериализатора выше, 'Пользователь'
class User(AbstractBaseUser, PermissionsMixin):
username = models.CharField(db_index=True, max_length=255, unique=True)
email = models.EmailField(db_index=True, unique=True)
#Here, the password field here!
password = models.CharField(_('password'), max_length=128)
is_active = models.BooleanField(default=True)
is_staff = models.BooleanField(default=False)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
Теперь вы можете видеть, что в этом руководстве пароль уже есть в модели, но он был переопределен в сериализаторе ... даже если он использует ModelSerializer, который может автоматически импортировать все поля в соответствующей модели.
Не могли бы вы объяснить причину, по которой мы это делаем?