Django rest framework

#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({
  

«имя пользователя»: «учетная запись с этим именем пользователя уже существует.»,
})