Правильный способ возврата ошибочных данных при ошибке сериализатора
Появился сериализатор пользователей для вставки нескольких пользователей одновременно.
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')], }]
ошибка, но не указывает, какие данные являются ошибочными.
Существует ли способ обнаружить ошибочные данные и каким-либо образом привязать данные к ошибке сериализации?