是否可以在创建 Pydantic BaseModel 属性后立即对其进行修改?

Shu*_*hah 4 python python-3.x pydantic fastapi

我开始学习 FastAPI 和 Pydantic 并有疑问。我有以下 BaseModel 子类

class Product(BaseModel):
  image: str
  name: str
Run Code Online (Sandbox Code Playgroud)

保存此模型后,我想image存储值/static/+image以便创建漂亮的超链接 REST 端点。这可以使用__post_init_post_parse__pydantic 数据类的钩子来实现,但由于 FastAPI 目前不支持它,我想知道什么可以解决这个问题。

ale*_*ame 5

您可以使用自定义validator

>>> from pydantic import BaseModel, validator
>>> class Product(BaseModel):
    image: str
    name: str
    @validator('image')
    def static_mage(cls, image):
        return '/static/{}'.format(image)


>>> p = Product(image='pic.png', name='product_1')
>>> p
Product(image='/static/pic.png', name='product_1')
Run Code Online (Sandbox Code Playgroud)