问题标签 [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.

0 投票
1 回答
388 浏览

python - OpenAPI 生成的架构请求正文显示默认值而不是类型

在将 Pydantic 与 FastApi 一起使用时,我有一个自动生成的 Swagger UI。

示例 Post 方法的代码如下,其中包含使用的 pydantic 模型。

为此,UI 显示以下内容:

图像 1图像 2

在尝试时:

图 3

但是,在试用时,我希望预填充的值不是类型,而是指示的默认值(即“stackl”、“web”和“default_test_instance”)。我去了文档,但还没有找到一种方法来做到这一点。这可能吗?

0 投票
1 回答
1017 浏览

python - 在 FastAPI 应用程序中处理有条件要求的参数的最佳方法是什么?

我正在开发一个 FastAPI 应用程序。我有以下架构

如果 address_street 和 addres_number 不存在,我希望有条件地需要字段 address_string,反之亦然,如果 address_street 不存在,则需要 address_street 和 address_number。

目前,我通过将所有字段设为可选并使用 root_validator 来检查一致性,并在相关字段的描述中记录此条件要求来管理这一点。

有没有更简洁的方法来管理这个内置的 FastAPI?

0 投票
1 回答
1253 浏览

python - Pydantic - 递归创建模型?

我正在尝试按如下方式使用 Pydantic:

这给了我以下错误:

pydantic 是否可以创建所需的A实例B

0 投票
1 回答
12447 浏览

python - 使用 FastAPI 读取正文 JSON 列表

HTTP PUT 请求的主体是一个 JSON 列表 - 像这样:

我无法改变这一点。(如果根是 JSON 对象而不是列表,则没有问题。)

使用 FastAPI 我似乎无法以正常方式访问此内容:


我找到了以下解决方法,这似乎是一个非常丑陋的 hack:

这肯定不是实现这一目标的“批准”方式。我已经浏览了 FastAPI 和 pydantic 的文档。我错过了什么?

0 投票
1 回答
1617 浏览

python - 使用 Pydantic 的 FastApi 中的动态体

我想在 FastApi 上有一个动态的强制性机构。

我解释 :

在这里,我的 body 是在 Parameters 类中手动定义的,有两个属性,平台和国家。未来,这些属性将来自一个配置文件,并且会有两个以上的属性。所以我需要动态地自动创建它们。

例如,在配置文件中,我可以:

在这种情况下,我怎么能在正文中拥有可变数量的参数?我应该找到一种方法为我的参数类提供可变数量的属性吗?

0 投票
2 回答
3020 浏览

python-3.x - 如何将 kwargs 传递给 pydantic 验证器

我正在尝试编写pydantic验证器,但我似乎无法理解如何使用kwargs文档中提到的参数。我想传递条件参数进行验证。这是一个玩具示例:

这似乎不起作用,实例化一个Point_t对象会导致验证错误:

如何传递signs上面示例中的参数?如果没有办法,允许有什么意义**kwargs?我错过了什么?

0 投票
1 回答
501 浏览

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并不像它声称的那样真正支持通过类型注释进行调度。

0 投票
1 回答
2455 浏览

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 的一个普通模式(它也可以自己工作)。但是我该怎么做呢?

0 投票
1 回答
6707 浏览

python - 如何在 python pydantic basemodels 中要求预定义的字符串值?

pydantic 中是否有任何内置方式来指定选项?例如,假设我想要一个必须具有值“foo”或“bar”的字符串值。

我知道我可以使用正则表达式验证来执行此操作,但是由于我将 pydantic 与 FastAPI 一起使用,用户只会将所需的输入视为字符串,但是当他们输入某些内容时,它会给出验证错误。pydantic 的所有内置验证都显示在 api 界面中,所以如果有类似的东西会很棒

0 投票
0 回答
175 浏览

python - 列的架构(数组(JSON))

在我的模型中,我有一个字段如下。我正在使用 sqlalchemy。

我想使用 pydantic 模式来验证这一点。目前我正在关注。

但是当我试图在媒体中插入值时。我收到以下错误。