小编Pok*_*aCe的帖子

使用extend_schema_field作为自定义字段

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

class User(AbstractBaseUser):
    profile_image = PictureField(make_thumbnail=True)
Run Code Online (Sandbox Code Playgroud)

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

{
    "image": {
      "url": "string",
      "name": "string"
    },
    "thumbnail": {
      "url": "string",
      "name": "string"
    } | None
}
Run Code Online (Sandbox Code Playgroud)

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

@extend_schema_field(OpenApiTypes.BINARY)
class PictureSerializerField(ImageField):
     ...
Run Code Online (Sandbox Code Playgroud)

现在,我的 Swagger 文档如下所示:
我正在寻找类似下面的内容来显示我的输出到响应,并且我也能够在请求中上传文件:

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

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

django-serializer swagger django-rest-framework openapi drf-spectacular

5
推荐指数
1
解决办法
5629
查看次数