Повторное использование определения выбора в генерации чванства с Django Rest Framework - PullRequest
0 голосов
/ 20 июня 2019

У меня есть веб-сервис Django (Django Rest Framework), который использует drf-yasg для генерации swagger.json файла.В этой модели у меня есть пара перечислений / полей выбора, которые используются более чем в одном месте.По умолчанию drf-yasg определяет встроенное поле для каждого вхождения:

Choices = serializers.ChoiceField(choices=['a', 'b', 'c'])

class SomeObject(serializers.Serializer):
    field_1 = Choices
    field_2 = Choices

Создает следующие определения в файле swagger:

{
  "definitions": {
    "SomeObject": {
      "required": [ "field_1", "field_2" ],
      "type": "object",
      "properties": {
        "field_1": {
          "title": "Field 1",
          "type": "string",
          "enum": [ "a", "b", "c" ]
        },
        "field_2": {
          "title": "Field 1",
          "type": "string",
          "enum": [ "a", "b", "c" ]
        }
      }
    }
  }
}

Это небольшая проблема, посколькуИнструменты client-codegen генерируют каждое перечисление как свой собственный тип вместо повторного использования определения.Поэтому вместо этого я хотел бы создать swaggerfile, например, так:

{
  "definitions": {
    "Choices": {
      "title": "Field 1",
      "type": "string",
      "enum": [ "a", "b", "c" ]
    },
    "SomeObject": {
      "required": [ "field_1", "field_2" ],
      "type": "object",
      "properties": {
        "field_1": {
          "$ref": "#/definitions/Choices"
        },
        "field_2": {
          "$ref": "#/definitions/Choices"
        }
      }
    }
  }
}

Возможно ли включить это поведение в Django Rest Framework?

...