Django DRF: схема для массового создания API - PullRequest
0 голосов
/ 13 ноября 2018

Я использую django-rest-framework для создания своего API, в котором поддерживается массовое создание / обновление. В этих случаях API будет принимать список объектов, таких как

[
    {"foo":"bar"},
    {"foo":"bar"}
]

Код, который я использую для разрешения массового apis, является лишь небольшой модификацией для добавления опции many = True для сериализатора, если данные представляют собой список. Это как:

class FooViewSet(views.ModelViewSet):
    def create(self, request, *args, **kwargs):
        many = isinstance(request.data, list)
        if many:
            serializer = self.get_serializer(data=request.data, many=True)
            serializer.is_valid(raise_exception=True)
            self.perform_bulk_create(serializer)
        else:
            ................

Я использую drf_yasg для генерации API. Но проблема в том, что сгенерированная схема продолжает определять мое тело запроса только для одной модели. Есть ли какая-либо конфигурация, чтобы генератор схемы DRF знал, что он примет тип списка?

Вот схема, сгенерированная DRF

{
  "post": {
    "operationId": "foos_create",
    "description": "",
    "parameters": [
      {
        "name": "data",
        "in": "body",
        "required": true,
        "schema": {
          "$ref": "#/definitions/Foo"
        }
      }
    ],
    "responses": {
      "201": {
        "description": "",
        "schema": {
          "$ref": "#/definitions/Foo"
        }
      }
    },
    "tags": [
      "foos"
    ]
  }
}

Я ожидаю, что схема будет массив тип Foo определение

Любая помощь будет оценена. Спасибо за ваше время.

...