Как изменить имя поля Serialzed User Model на фронтенде в Django Rest Framework?

Я делаю простое приложение Login/Logout App с использованием REST API в Django DRF. Я использую модель по умолчанию User для этого поведения.

В API Login я хотел аутентифицировать пользователя по электронной почте, поэтому я написал пользовательскую аутентификацию, используя ModelBackend. Все работает отлично.

Но я хочу изменить слово username на email в передней части Login API. Я пробовал использовать атрибут source, но он не меняется. Есть ли какой-нибудь простой способ сделать это? Я ищу что-то вроде verbose_name, который используется в Django Models.

Мой serializers.py - это:

class LoginSerializer(serializers.Serializer):
    username = serializers.CharField(source='Email')
    password = serializers.CharField()

    def validate(self, data):
        user = authenticate(**data)
        if user and user.is_active:
            return user
        raise serializers.ValidationError('Incorrect Credentials Passed.')

Опять же, я использую модель по умолчанию User, и я не хочу перезаписывать/переопределять/расширять модель User. Я просто хочу изменить имя поля username на фронтенде, чтобы оно отображалось как email.

Любая помощь будет оценена по достоинству.

Вам нужно передать значение с именем email, а не username своему ModelBackend подклассу:

class LoginSerializer(serializers.Serializer):
    username = serializers.CharField()
    password = serializers.CharField()

    def validate(self, data):
        user = authenticate(**{'email': data['username'], 'password': data['password']})
        if user and user.is_active:
            return user
        raise serializers.ValidationError('Incorrect Credentials Passed.')
Вернуться на верх