Настройка сериализатора Djoser
Я создал два настраиваемых сериализатора для конечных точек user_create и current_user в Djoser.
Я также хотел иметь поле re_password в регистре пользователя. Но когда я добавляю "USER_CREATE_PASSWORD_RETYPE": True
в настройки Djoser, мой сериализатор для создания пользователя не работает. Не могли бы вы подсказать мне, в чем проблема?
вот мой сериализатор:
from djoser.serializers import UserSerializer as BaseUserSerializer, UserCreateSerializer as BaseUserCreateSerializer
class UserCreateSerializer(BaseUserCreateSerializer):
class Meta(BaseUserCreateSerializer.Meta):
fields = ['id', 'username', 'password', 'email', 'first_name', 'last_name']
class UserSerializer(BaseUserSerializer):
class Meta(BaseUserSerializer.Meta):
fields = ['id', 'username', 'email', 'first_name', 'last_name', 'password']
а вот параметры Джосера:
DJOSER = {
"USER_CREATE_PASSWORD_RETYPE": True,
"SERIALIZERS": {
'user_create': 'core.serializers.UserCreateSerializer',
'current_user': 'core.serializers.UserSerializer',
}
}
В итоге я унаследовал от UserCreatePasswordRetypeSerializer вместо UserCreateSerializer, чтобы иметь и поле re_password и мой настроенный сериализатор.
А также я удалил "USER_CREATE_PASSWORD_RETYPE": True
из настроек и все работает правильно.
Не нужно удалять "USER_CREATE_PASSWORD_RETYPE": True
из settings.py. Вам просто нужно определить новый сериализатор
from djoser.serializers import UserCreatePasswordRetypeSerializer
class CustomUserCreatePasswordRetypeSerializer(UserCreatePasswordRetypeSerializer):
class Meta(UserCreatePasswordRetypeSerializer.Meta):
fields = ['id', 'username', 'password', 'email', 'first_name', 'last_name']
и в settings.py
DJOSER = {
"SERIALIZERS": {
'user_create_password_retype': 'core.serializers.CustomUserCreatePasswordRetypeSerializer',
}
}
так как он использует сериализатор user_create_password_retype
, когда "USER_CREATE_PASSWORD_RETYPE"
установлен на True
.