Как удалить пароль из ответа в django
Код: СЕРИЛИЗАТОРЫ
class RegisterSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ("email", "user_name", "password")
def create(self, validated_data):
return User.objects.create_user(**validated_data)
ПРОСМОТРОВ
@api_view(["POST"])
@permission_classes([AllowAny])
def CreateUserView(request):
serializer = RegisterSerializer(data=request.data)
if serializer.is_valid():
user = serializer.save()
if user:
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
МОДЕЛИ
class CustomAccountManager(BaseUserManager):
def create_user(self, email, user_name, password, **other_fields):
if not email:
raise ValueError(_("You must provide an email address"))
email = self.normalize_email(email)
user = self.model(email=email, user_name=user_name, **other_fields)
user.set_password(password)
user.save()
return user
После того, как я разместил пользователя, я получил ответные данные с паролем.
{
"email": "mawqgvxdfdat1@mat.com",
"user_name": "sdwxcvgfsdefsdf",
"password": "pbkdf2_sha256$320000$g74DLAMRDypcK6LuGriBio$
}
Как я могу удалить этот пароль из возвращаемых данных?
Внутренний сериализатор
fields = ("email", "user_name",)
extra_kwargs = {'password': {'write_only': True}}
Фактически удалить из него поле пароля
Согласно docs, вы можете использовать extra_kwargs. Таким образом, ваш сериализатор будет выглядеть следующим образом -
class RegisterSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ("email", "user_name", "password")
extra_kwargs = {'password': {'write_only': True}}
def create(self, validated_data):
return User.objects.create_user(**validated_data)