0

我创建了一个名为的自定义字段PictureField,它使用上传的图像创建缩略图,并在我的User模型

用户模型中使用它:

class User(AbstractBaseUser):
    profile_image = PictureField(make_thumbnail=True)

My PictureField, 获取一个图像文件,django's ImageField并返回一个像这样的字典:

{
    "image": {
      "url": "string",
      "name": "string"
    },
    "thumbnail": {
      "url": "string",
      "name": "string"
    } | None
}

一切都很好,我的自定义字段工作正常。我的问题是用 drf_spectacular 创建的模式。我不知道如何将此输出设置为我的PictureSerializerField. 已经,我将@extend_schema_field我的字段的装饰器设置为BINARY(以便能够使用 Swagger 上传文件),并且我的响应输出设置为“字符串”:

@extend_schema_field(OpenApiTypes.BINARY)
class PictureSerializerField(ImageField):
     ...

现在,我的 Swagger 文档看起来像这样: 我正在寻找类似下面的内容来向 Response 显示我的输出,并且我还能够在请求中上传文件:

@extend_schema_field({
    'request':OpenApiTypes.BINARY,
    'response': {}# My output example that I said above
})

我的想法是创建一个空的序列化程序类并设置@extend_schema_serializer它,但我认为这不是好方法并且不起作用。

4

1 回答 1

0

好的,我已经修好了。@extend_schema_field刚读了一点OpenAPI文档,我也看到了 supportdict参数,所以我这样写我的代码:

@extend_schema_field({'type':"string",'format':'binary',
    'example':{
             "image":{"url":"string","name":"string"},
             "thumbnail":{"url":"string","name":"string"}
    }
})
class PictureSerializerField(ImageField):
    ...

它看起来不错。在此处输入图像描述

于 2021-09-28T01:23:37.680 回答