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 的模式进行验证