Правильный способ возврата ошибочных данных при ошибке сериализатора

Появился сериализатор пользователей для вставки нескольких пользователей одновременно.

class CreateUserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = (
            'username',
            'email',
            'first_name',
            'last_name',
            'is_active',
        )

Передача данных из запроса в сериализатор для создания пользователей

payload = [
  {
    "username": "johndoe",
    "email": "john@doe.com",
    "first_name": "John",
    "last_name": "Doe",
    "is_active": true
  },
  {
    "username": "janedoe",
    "email": "jane@doe.com",
    "first_name": "Jane",
    "last_name": "Doe",
    "is_active": true
  },
  {
    "username": "johndoe",
    "email": "james@doe.com",
    "first_name": "James",
    "last_name": "Doe",
    "is_active": true
  }
]

При вставке полезной нагрузки через сериализатор, is_valid возвращает false, поскольку одно и то же имя пользователя дважды используется в полезной нагрузке.

def create_user(request):
    data = request.data["payload"]
    serialized_data = CreateUserSerializer(data=data, many=is_many)
    if serialized_data.is_valid():
        serialized_data.save()
    else:
        return serialized_data.errors

Приведенный выше метод возвращает

[{'username': [ErrorDetail(string='user with this username already exists.', code='unique')], }]

ошибка, но не указывает, какие данные являются ошибочными.

Существует ли способ обнаружить ошибочные данные и каким-либо образом привязать данные к ошибке сериализации?

Вернуться на верх