据我所知,SQLmodel
部分基于pydantic
. 不过,当使用in 中的Field
函数时,我得到了不同的结果 OpenAPI 规范。SQLmodel
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
上的a 正确返回。但是,生成的规范如下:test
{"nullable_param":3}
OpenAPI
Model
{
"Model":{
"title":"Model",
"type":"object",
"properties":{
"nullable_param":{"title":"Nullable Param","type":"integer"}
}
}
}
注意nullable_param
缺少nullable=true
属性!
Field
当我直接从pydantic
( )导入时from pydantic import Field
,它确实包含此属性:
{
"Model":{
"title":"Model",
"type":"object",
"properties":{
"nullable_param":{ "title":"Nullable Param", "type":"integer", "nullable":true }
}
}
}
我做错了什么,还是在上下文中的Field
实现中可能存在错误?SQLModel
FastAPI
pydantic 1.8.2 fastapi 0.74.1 sqlmodel 0.0.6 python 3.8.12