问题标签 [pydantic]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 在 FastAPI 应用程序中处理有条件要求的参数的最佳方法是什么?
我正在开发一个 FastAPI 应用程序。我有以下架构
如果 address_street 和 addres_number 不存在,我希望有条件地需要字段 address_string,反之亦然,如果 address_street 不存在,则需要 address_street 和 address_number。
目前,我通过将所有字段设为可选并使用 root_validator 来检查一致性,并在相关字段的描述中记录此条件要求来管理这一点。
有没有更简洁的方法来管理这个内置的 FastAPI?
python - Pydantic - 递归创建模型?
我正在尝试按如下方式使用 Pydantic:
这给了我以下错误:
pydantic 是否可以创建所需的A
实例B
?
python - 使用 FastAPI 读取正文 JSON 列表
HTTP PUT 请求的主体是一个 JSON 列表 - 像这样:
我无法改变这一点。(如果根是 JSON 对象而不是列表,则没有问题。)
使用 FastAPI 我似乎无法以正常方式访问此内容:
我找到了以下解决方法,这似乎是一个非常丑陋的 hack:
这肯定不是实现这一目标的“批准”方式。我已经浏览了 FastAPI 和 pydantic 的文档。我错过了什么?
python - 使用 Pydantic 的 FastApi 中的动态体
我想在 FastApi 上有一个动态的强制性机构。
我解释 :
在这里,我的 body 是在 Parameters 类中手动定义的,有两个属性,平台和国家。未来,这些属性将来自一个配置文件,并且会有两个以上的属性。所以我需要动态地自动创建它们。
例如,在配置文件中,我可以:
在这种情况下,我怎么能在正文中拥有可变数量的参数?我应该找到一种方法为我的参数类提供可变数量的属性吗?
python-3.x - 如何将 kwargs 传递给 pydantic 验证器
我正在尝试编写pydantic
验证器,但我似乎无法理解如何使用kwargs
文档中提到的参数。我想传递条件参数进行验证。这是一个玩具示例:
这似乎不起作用,实例化一个Point_t
对象会导致验证错误:
如何传递signs
上面示例中的参数?如果没有办法,允许有什么意义**kwargs
?我错过了什么?
python-3.x - 输入类型是否有规范的“isinstance”实现?
您不能在支票中使用键入类型:Dict[str, int]
isinstance
然而,任何进行类型检查的库都需要能够做类似的事情isinstance(myvar, Dict[str, int])
(......我意识到它应该被称为不同于 的东西isinstance
,这不是完全相同的东西)
我觉得适用于打字的等效功能必须存在于某处,也许在mypy项目中?(但那里有很多复杂的代码,我至今找不到)
除了 mypy 之外,还有很多项目需要这个,例如pydantic和 AFAICT,它们都有复杂的手动实现,而且似乎有很多边缘案例(或者只是……“案例”)需要列举并覆盖。这会导致错误/有限的类型识别,例如https://github.com/bloomberg/attrs-strict/issues/27
似乎需要此功能的规范实现。是否已经存在一个我没有找到的地方?
我给你一个来自 Python 标准库的激励例子:
https://docs.python.org/3/library/functools.html#functools.singledispatch
对于带有类型注释的函数,装饰器将自动推断第一个参数的类型:
嗯,这很酷。但这是作弊,因为这些天我们通常不会使用list
内置函数来注释第二个函数,而是使用类似的东西List[str]
......这不起作用,因为singledispatch
只是做一个幼稚的isinstance
检查,并且不能处理键入泛型。所以singledispatch
并不像它声称的那样真正支持通过类型注释进行调度。
python-3.x - 使用 fastAPI 将嵌套模式插入数据库?
我最近开始了解 fastAPI 并通过教程和其他文档进行了工作。尽管 fastAPI 有很好的文档记录,但我找不到有关在使用数据库时如何处理嵌套输入的信息。
为了测试,我写了一个非常小的家庭API,有两个模型:
我创建了一个包含两个表和此处描述的关系的 Postgres 数据库。使用 fastAPI 教程中的模式定义和 crud 文件,我可以创建单独的族和成员,并使用 get 请求以嵌套方式查看它们。这是嵌套模式:
到目前为止,一切都很好。现在,我想添加一个帖子视图,它接受嵌套结构作为输入并相应地填充数据库。https://fastapi.tiangolo.com/tutorial/body-nested-models/上的文档原则上展示了如何做到这一点,但它错过了数据库(即 crud)部分。
由于输入将没有id
字段并且显然不需要指定family_id
,因此我有一个MemberStub
架构和NestedFamilyCreate
架构如下:
在我的路由例程families.py
中,我有:
(response_model 指向包含所有 id 在内的所有成员的家庭的嵌套视图;见上文)。
我无法弄清楚的是如何编写crud.create_nested_family
例程。基于教程中的简单创建,这看起来像:
所以,我可以提取成员并遍历它们,但我首先需要创建一个db_family
不能包含成员的新记录。然后,使用db.refresh
,我将获得新的 family_id,我可以将其添加到 的每条记录中members
。但是我该怎么做呢?如果我了解这里需要什么,我需要将我的嵌套模式映射到 FamilyCreate 的普通模式(它自己工作)和 MemberCreate 的一个普通模式(它也可以自己工作)。但是我该怎么做呢?
python - 如何在 python pydantic basemodels 中要求预定义的字符串值?
pydantic 中是否有任何内置方式来指定选项?例如,假设我想要一个必须具有值“foo”或“bar”的字符串值。
我知道我可以使用正则表达式验证来执行此操作,但是由于我将 pydantic 与 FastAPI 一起使用,用户只会将所需的输入视为字符串,但是当他们输入某些内容时,它会给出验证错误。pydantic 的所有内置验证都显示在 api 界面中,所以如果有类似的东西会很棒
python - 列的架构(数组(JSON))
在我的模型中,我有一个字段如下。我正在使用 sqlalchemy。
我想使用 pydantic 模式来验证这一点。目前我正在关注。
但是当我试图在媒体中插入值时。我收到以下错误。