Хорошо, я на самом деле удивлен, что создание отдельного экземпляра объекта работает, так как данные, похоже, не в правильном формате.
Когда используется аргумент many
, сериализатор ожидает список, но вы отправляете объект json.
Это то, что JSON должно понравиться:
[
{
"field_1": 1,
"field_2": 0.05,
"field_3': "abc"
},
{
"field_1": 1,
"field_2": 0.05,
"field_3': "abc"
},
{
"field_1": 1,
"field_2": 0.05,
"field_3': "abc"
}
]
Здесь следует отметить следующие моменты:
- JSON начинается со списка
- Поля находятся непосредственно в теле каждого объекта - нет поля
type
или attribute
, ожидайте, что вы реализуете логику для анализа этого в вашем сериализаторе
- JSON использует не одинарные, а двойные
Вы проверяли request.data
, чтобы подтвердить, что он пустой, как вы сказали? Если так, то это вообще другая проблема, так как это может быть проблемой синтаксического анализа.
РЕДАКТИРОВАТЬ: Использование JSON API
После небольшого рытья в json api github-странице структуры фреймворка я обнаружил эту проблему , запрашивающую поддержку массовых операций.
По-видимому, они добавили его в этот запрос на получение , и вы можете увидеть правильный формат нескольких объектов в комментариях.
Ваш должен быть таким:
{
"data": [
{
"type": "MySerializer",
"attributes": {
"field_1": 1,
"field_2": 0.05,
"field_3": "abc"
}
},
{
"type": "MySerializer",
"attributes": {
"field_1": 1,
"field_2": 0.05,
"field_3": "abc"
}
},
{
"type": "MySerializer",
"attributes": {
"field_1": 1,
"field_2": 0.05,
"field_3": "abc"
}
}
]
}
Скорее всего, парсер не смог проанализировать данные в указанном вами формате, и поэтому ваш request.data
пуст.
РЕДАКТИРОВАТЬ 2:
Хотя функция массовых операций не была интегрирована в спецификации json-api, JSON-API Django Rest уже добавил для нее специальный анализатор.
Так что вам придется добавить этот синтаксический анализатор JSONAPIBulkParser
, чтобы он работал. Проверьте этот комментарий в PR