Body - Campos¶
🌐 Traducción por IA y humanos
Esta traducción fue hecha por IA guiada por humanos. 🤝
Podría tener errores al interpretar el significado original, o sonar poco natural, etc. 🤖
Puedes mejorar esta traducciónayudándonos a guiar mejor al LLM de IA.
De la misma manera que puedes declarar validaciones adicionales y metadatos en los parámetros de laspath operation function conQuery,Path yBody, puedes declarar validaciones y metadatos dentro de los modelos de Pydantic usandoField de Pydantic.
ImportarField¶
Primero, tienes que importarlo:
fromtypingimportAnnotatedfromfastapiimportBody,FastAPIfrompydanticimportBaseModel,Fieldapp=FastAPI()classItem(BaseModel):name:strdescription:str|None=Field(default=None,title="The description of the item",max_length=300)price:float=Field(gt=0,description="The price must be greater than zero")tax:float|None=None@app.put("/items/{item_id}")asyncdefupdate_item(item_id:int,item:Annotated[Item,Body(embed=True)]):results={"item_id":item_id,"item":item}returnresults🤓 Other versions and variants
Tip
Prefer to use theAnnotated version if possible.
fromfastapiimportBody,FastAPIfrompydanticimportBaseModel,Fieldapp=FastAPI()classItem(BaseModel):name:strdescription:str|None=Field(default=None,title="The description of the item",max_length=300)price:float=Field(gt=0,description="The price must be greater than zero")tax:float|None=None@app.put("/items/{item_id}")asyncdefupdate_item(item_id:int,item:Item=Body(embed=True)):results={"item_id":item_id,"item":item}returnresultsAdvertencia
Fíjate queField se importa directamente desdepydantic, no desdefastapi como el resto (Query,Path,Body, etc).
Declarar atributos del modelo¶
Después puedes utilizarField con los atributos del modelo:
fromtypingimportAnnotatedfromfastapiimportBody,FastAPIfrompydanticimportBaseModel,Fieldapp=FastAPI()classItem(BaseModel):name:strdescription:str|None=Field(default=None,title="The description of the item",max_length=300)price:float=Field(gt=0,description="The price must be greater than zero")tax:float|None=None@app.put("/items/{item_id}")asyncdefupdate_item(item_id:int,item:Annotated[Item,Body(embed=True)]):results={"item_id":item_id,"item":item}returnresults🤓 Other versions and variants
Tip
Prefer to use theAnnotated version if possible.
fromfastapiimportBody,FastAPIfrompydanticimportBaseModel,Fieldapp=FastAPI()classItem(BaseModel):name:strdescription:str|None=Field(default=None,title="The description of the item",max_length=300)price:float=Field(gt=0,description="The price must be greater than zero")tax:float|None=None@app.put("/items/{item_id}")asyncdefupdate_item(item_id:int,item:Item=Body(embed=True)):results={"item_id":item_id,"item":item}returnresultsField funciona de la misma manera queQuery,Path yBody, tiene todos los mismos parámetros, etc.
Detalles técnicos
En realidad,Query,Path y otros que verás a continuación crean objetos de subclases de una clase comúnParam, que es a su vez una subclase de la claseFieldInfo de Pydantic.
YField de Pydantic también regresa una instance deFieldInfo.
Body también devuelve objetos de una subclase deFieldInfo directamente. Y hay otros que verás más adelante que son subclases de la claseBody.
Recuerda que cuando importasQuery,Path, y otros desdefastapi, en realidad son funciones que devuelven clases especiales.
Consejo
Observa cómo cada atributo del modelo con un tipo, un valor por defecto yField tiene la misma estructura que un parámetro de unapath operation function, conField en lugar dePath,Query yBody.
Agregar información extra¶
Puedes declarar información extra enField,Query,Body, etc. Y será incluida en el JSON Schema generado.
Aprenderás más sobre cómo agregar información extra más adelante en la documentación, cuando aprendamos a declarar ejemplos.
Advertencia
Las claves extra pasadas aField también estarán presentes en el esquema de OpenAPI resultante para tu aplicación.Como estas claves no necesariamente tienen que ser parte de la especificación de OpenAPI, algunas herramientas de OpenAPI, por ejemploel validador de OpenAPI, podrían no funcionar con tu esquema generado.
Resumen¶
Puedes utilizarField de Pydantic para declarar validaciones adicionales y metadatos para los atributos del modelo.
También puedes usar los argumentos de palabra clave extra para pasar metadatos adicionales del JSON Schema.







