代码之家  ›  专栏  ›  技术社区  ›  Ben

OpenAPI规范中pydantic和SQLModel中的不同行为字段

  •  0
  • Ben  · 技术社区  · 4 年前

    据我所知, SQLmodel 部分基于 pydantic 尽管如此,当使用 Field 函数来自 SQL模型 在里面 FastAPI

    例如,查看以下示例:

    from typing import Optional
    from fastapi import FastAPI
    from sqlmodel import Field, SQLModel
    
    app = FastAPI()
    
    class Model(SQLModel):
        nullable_param: Optional[int] = Field(None, nullable=True)
    
    @app.get("/test", response_model=Model)
    def foo():
        return Model(nullable_param=3)
    

    此代码运行 GET test 端点正确返回 {"nullable_param":3} 然而 OpenAPI 规范 Model 如下所示:

    {
        "Model":{
            "title":"Model",
            "type":"object",
            "properties":{
                "nullable_param":{"title":"Nullable Param","type":"integer"}
            }
        }
    }
    

    请注意 nullable_param 缺少 nullable=true 属性

    当我导入时 领域 直接来自 pydantic ( from pydantic import Field ),它 包括此属性:

    {
        "Model":{
            "title":"Model",
            "type":"object",
            "properties":{
                 "nullable_param":{ "title":"Nullable Param", "type":"integer", "nullable":true }
            }
        }
    }
    

    我做错了什么吗,或者 领域 的实施 SQLModel FastAPI 上下文

    pydantic 1.8.2 fastapi 0.74.1 sqlmodel 0.0.6 python 3.8.12

    0 回复  |  直到 4 年前