如何在FastAPI中为Pydantic的嵌套BaseModel分配标签

0 投票
0 回答
23 浏览
提问于 2025-04-12 02:17

在我的fastapi应用中,我有一个叫做'Invoice'的pydantic基础模型。它里面有一个字段'taxes_list',这个字段其实就是一个TaxModel的列表。当我查看生成的文档时,我发现'taxes_list'并没有显示出它是一个TaxModel的列表。在下面的图片中,你可以看到税务列表是一个对象数组,而这个列表中每个项目的标签都是“Items”,而不是“TaxModel”。有没有办法把“items”这个词换成模型的名字?或者至少能不能给出一些提示,说明'taxes_list'是一个TaxModel的列表呢?

这是我的代码:

class Invoice(BaseModel):
    taxes_list: Optional[Annotated[list[TaxModel], Field(title="Taxes List",
                                                        description="""TODO Se debe poner una descripcion AKI""")]] = None
                                                        
                                                        
                                                        
class TaxModel(BaseModel):
    """ Tax description"""
    
    base: Decimal = Field(...,
                                title="Base",
                                examples={
                                    1500.00,
                                    300.600000
                                },
                                decimal_places=6,
                                gt=0)
    importe: Decimal = Field(...,
                                title="Importe",
                                examples={
                                    240.00,
                                    0.00
                                },
                                decimal_places=6,
                                ge=0)

    impuesto: ImpuestoEnum = Field(title="Impuesto",
                                        max_length=3,
                                        examples=[
                                            "002",
                                            "001",
                                        ])
    tipo_factor: TipoFactorEnum = Field(title="Tipo Factor",
                                            examples=[
                                                "Tasa",
                                                "Cuota",
                                            ])
    tasa_o_cuota: Decimal = Field(...,
                                    title="Tasa o Cuota",
                                    examples={
                                        0.160000,
                                        0.200000
                                    },
                                    decimal_places=6,
                                    ge=0)

fastapi文档的图片

0 个回答

暂无回答

撰写回答