Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 是否可以在创建Pydantic BaseModel属性之后修改它?_Python_Python 3.x_Fastapi_Pydantic - Fatal编程技术网

Python 是否可以在创建Pydantic BaseModel属性之后修改它?

Python 是否可以在创建Pydantic BaseModel属性之后修改它?,python,python-3.x,fastapi,pydantic,Python,Python 3.x,Fastapi,Pydantic,我开始学习FastAPI和Pydantic,我有一个疑问。我有以下BaseModel的子类 类别产品(基本型号): 图片:str 姓名:str 保存此模型后,我希望image存储值/static/+image,以便创建漂亮的超链接REST端点。这可以使用pydantic dataclass的钩子来实现,但由于FastAPI目前不支持它,我想知道有什么办法可以解决这个问题。您可以使用自定义的验证器: >>> from pydantic import BaseModel, val

我开始学习FastAPI和Pydantic,我有一个疑问。我有以下BaseModel的子类

类别产品(基本型号):
图片:str
姓名:str

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

您可以使用自定义的
验证器

>>> 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')

这是以某种方式返回API文档中的响应
/static/static/456.png
,而不是
/static/456.png
,不明白为什么看到一个最小的可复制示例会很好。我将假设您从一个对象获取一个图像并将其插入另一个对象,即验证它两次0.37.0中添加了对pydantic数据类的支持-您遇到了什么问题?