Как изменить имя поля 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.')