gpt4 book ai didi

python - pydantic 中有 post_load 吗?

转载 作者:行者123 更新时间:2023-12-04 09:00:04 25 4
gpt4 key购买 nike

以前我用过marshmallow带 Flask 的库。前段时间我用 Pydantic 尝试过 FastAPI .第一眼 pydantic似乎类似于 masrhmallow但仔细观察,它们有所不同。对我来说,它们之间的主要区别是 post_load来自 marshmallow 的方法.我在 pydantic 中找不到任何类似物.post_load是后处理方法的装饰器。使用它我可以自己处理返回对象,可以为所欲为:

class ProductSchema(Schema):
alias = fields.Str()
category = fields.Str()
brand = fields.Str()

@post_load
def check_alias(self, params, **kwargs):
"""One of the fields must be filled"""
if not any([params.get('alias'), params.get('category'), params.get('brand')]):
raise ValidationError('No alias provided', field='alias')
return params
此外它不仅用于验证。代码示例仅供视觉理解,请勿分析,我刚发明。
所以我的问题是: post_load有类似的吗?在 pydantic ?

最佳答案

是的,您可以使用 Pydantic 的 @validator decorator进行预加载、后加载、模型验证等。
这是一个后加载示例

from pydantic import validator

class Person(BaseModel):
first_name: str
second_name: str

@validator("first_name")
def make_it_formal(cls, first_name):
return f"Mr. {first_name.capitalize()}"



p = Person(first_name="egvo", second_name="Example")

p.first_name
Out: Mr. Egvo

关于python - pydantic 中有 post_load 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63597239/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com