Tengo un esquema profundamente anidado para un modelo pydantic. Quería incluir un ejemplo para el usuario de fastapi. Cuando intento hacerlo, pydantic ignora el ejemplo. A continuación se muestra el código de mi modelo:
# generated by datamodel-codegen: # filename: mllogitem.json # timestamp: 2022-02-08T13:47:04+00:00 from __future__ import annotations from typing import List, Optional from pydantic import BaseModel class Input(BaseModel): columns: Optional[List[str]] = None index: Optional[List[int]] = None data: Optional[List[List]] = None class Output(BaseModel): question: Optional[str] = None answer: Optional[str] = None simScore: Optional[str] = None class MlFlowData(BaseModel): input: Optional[Input] = None output: Optional[Output] = None class MlFlow(BaseModel): appId: str sessionId: str timestamp: str type: str payload: MlFlowData class Config: arbitrary_types_allowed = True schema_extra = { "example": { "appId": "ConversationalAI", "sessionId": "d290f1ee-6c54-4b01-90e6-d701748f0851", "timestamp": "2018-09-27T12:40:00Z", "type": "Input/output data", "payload": { "input": { "columns": [ "question", "scenario" ], "index": [ 0 ], "data": [ [ "what is your name?", "gerontology" ] ] }, "output": { "answer": "Henry Williams: My name is Henry Williams.", "question": "What is your name? ", "simScore": "1.0" } } } }Veo el esquema en api show como
{ "appId": "string", "sessionId": "string", "timestamp": "string", "type": "string", "payload": { "input": { "columns": [ "string" ], "index": [ 0 ], "data": [ [ "string" ] ] }, "output": { "question": "string", "answer": "string", "simScore": "string" } } }Ignora mi esquema de ejemplo. Cualquier pista sobre esto será útil.
La clase Config debe estar anidada en su modelo de clase, en su ejemplo, la clase está sentada afuera:
class MlFlow(BaseModel): appId: str sessionId: str timestamp: str type: str payload: MlFlowData class Config: arbitrary_types_allowed = True schema_extra = {} Sugerencia: Establecer sus propiedades en Optional Y = None es redundante. Usuario cualquiera de los dos, no necesita ambos.