#django #django-rest-framework
#django #django-rest-framework
Вопрос:
мой сериализатор django rest framework возвращает ошибки в объекте JSON:
{
"username": [
"account with this username already exists."
],
как я могу заставить его возвращать ошибки в json следующим образом
{
"username": "account with this username already exists.",
}
мой код сериализатора:
from rest_framework import serializers
from account.models import Account
class RegistrationSerializer(serializers.ModelSerializer):
password2 = serializers.CharField(style={'input_type': 'password'}, write_only=True)
class Meta:
model = Account
fields = ['username', 'email', 'password', 'password2']
extra_kwargs = {
'password': {'write_only': True}
}
def save(self):
account = Account(
username=self.validated_data['username'],
email=self.validated_data['email'],
)
password = self.validated_data['password']
password2 = self.validated_data['password2']
if password != password2:
raise serializers.ValidationError({'password': 'Passwords must match'})
account.set_password(password)
account.save()
return account
Комментарии:
1. Что делать, если есть несколько ошибок? Вот почему он возвращает массив…
Ответ №1:
Вы можете проверить в своем методе save(), существует ли такая учетная запись, и если да, вернуть ответ:
from rest_framework.response import Response
....
def save():
check_account = Account.objects.filter(username=self.validated_data['username']).first()
if check_account is not None:
return Response({
«имя пользователя»: «учетная запись с этим именем пользователя уже существует.»,
})