我有一个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" ]
这是个小问题,因为它使客户端编码工具将每个枚举生成为自己的类型,而不是重复使用定义。所以我想创建一个这样的swagger文件。
"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框架内启用这种行为?