Django Swagger Schema:布尔类型的对象不是 JSON 可序列化的

Posted

技术标签:

【中文标题】Django Swagger Schema:布尔类型的对象不是 JSON 可序列化的【英文标题】:Django Swagger Schema: Object of type Boolean is not JSON serializable 【发布时间】:2020-10-17 12:10:22 【问题描述】:

我正在处理自定义架构,但在 Swagger 文档页面上出现 Object of type Boolean is not JSON serializable 错误。

import coreapi
import coreschema
from rest_framework.schemas import AutoSchema


class CustomSchema(AutoSchema):
    def get_manual_fields(self, path, method):
        manual_fields = []
        if method == "POST":
            manual_fields.extend(
                [
                    coreapi.Field(
                        "custom_field",
                        required=False,
                        location="form",
                        description="custom field",
                        type=coreschema.Boolean()
                    )
                ]
            )
        return manual_fields

我注意到使用 location="query" 不会产生上述错误,但我需要在 Swagger 的 form 中使用它。有什么解决方法吗?提前致谢!

【问题讨论】:

【参考方案1】:

不一定能解决上述错误,但这里有一个解决方法可以达到同样的目的:

from rest_framework import serializers
from . import CustomModel


class CustomSerializer(serializers.ModelSerializer):
    custom_field = serializers.BooleanField(write_only=True)

    class Meta:
        model = CustomModel
        fields = "__all__"

不是从views 调用schema = CustomSchema(),而是调用此CustomSerializer 并在序列化程序中指定write_only 字段会自动填充POST 方法的Swagger 架构。

【讨论】:

以上是关于Django Swagger Schema:布尔类型的对象不是 JSON 可序列化的的主要内容,如果未能解决你的问题,请参考以下文章

compojure-api/schema/swagger 中的非必需参数?

如何从 Swagger API 声明生成 JSON-Schema

要求数组在 Swagger Schema Object 定义中至少包含一个元素

RestAssured 中的无效 JSON Schema 异常,同时针对来自 swagger 的模式进行验证

drf-yasg:图像字段未在 swagger ui 中显示

FastAPI学习-9. Swagger文档输出请求示例example