- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下使用 Pydantic BaseModel 数据类的代码
from enum import Enum
import requests
from pydantic import BaseModel
from requests import Response
class PetType(Enum):
DOG: str = 'dog'
CAT: str = 'cat'
class Pet(BaseModel):
name: str
type: PetType
my_dog: Pet = Pet(name='Lucky', type=PetType.DOG)
# This works
resp: Response = requests.post('https://postman-echo.com/post', json=my_dog.json())
print(resp.json())
#This doesn't work
resp: Response = requests.post('https://postman-echo.com/post', json=my_dog.dict())
print(resp.json())
当我发送 json 等于模型的 dict() 时,我得到错误:
> TypeError:“PetType”类型的对象不是 JSON 可序列化的
如何克服这个错误并使 PetType 也可序列化?
附言上面的例子很简短,但我遇到了一个用例,两种情况都发送
json=my_dog.json()
和
json=my_dog.dict()
不工作。这就是为什么我需要使用 dict() 解决发送问题
最佳答案
**<---- 加法----> **
在 Pydantic Model Config 中查找 Pydantic 的参数“use_enum_values”
使用_enum_values是否使用枚举的 value 属性填充模型,而不是原始枚举。如果您想稍后序列化 model.dict(),这可能很有用(默认值:False)
看起来将此值设置为 True 将与以下解决方案相同。
原来这是 ENum 的一种行为,这里讨论:https://github.com/samuelcolvin/pydantic/issues/2278
你应该定义枚举的方式是使用
class PetType(str, Enum):
而不是
class PetType(Enum):
对于整数,这个 Python 的 Enum 库提供了 IntEnum 类型: https://docs.python.org/3.10/library/enum.html#enum.IntEnum
基本上是
class IntEnum(int, Enum):
pass
如果您查看上面的 Enum 文档,您会发现像 StrEnum 这样的类型不存在,但按照 PetType 的示例,您可以轻松定义它。
我在下面附上工作代码
from enum import Enum
import requests
from pydantic import BaseModel
from requests import Response
class PetType(str, Enum):
DOG: str = 'dog'
CAT: str = 'cat'
class Pet(BaseModel):
name: str
type: PetType
my_dog: Pet = Pet(name='Lucky', type=PetType.DOG)
# This works
resp: Response = requests.post('https://postman-echo.com/post', json=my_dog.json())
print(resp.json())
# Now this also works
resp: Response = requests.post('https://postman-echo.com/post', json=my_dog.dict())
print(resp.json())
关于python - 如何 JSON 序列化 Pydantic BaseModel 中的 ENum 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69541613/
使用 Pydantic 的数据类 vs BaseModel 的优缺点是什么?是否存在任何性能问题,或者 Pydantic 的数据类在其他 python 模块中是否更容易? 最佳答案 Pydantic
我目前正在使用 Odoo 移动框架构建一个应用程序。当我在我的project structure中的base.addons下查找BaseModels java类时,我找不到像 example 那样的类
我有一个包含所有必要参数的类。但是,对于 init 函数,它要求关键字参数,并且不接受位置参数。所以,我的问题是:我可以在 pydantic.BaseModel 的配置中更改某些内容以允许位置参数吗?
我开始学习 FastAPI 和 Pydantic 并且有疑问。我有 BaseModel 的以下子类 class Product(BaseModel): image: str name: str
我有一类属性,这些属性是从我需要在我的 MVC 应用程序的每个 View 上都可用的服务中设置的。 因此,我创建了一个“基础 View 模型”,我的 View 模型将从中继承。 public clas
我正在使用 Sequelize 作为数据 ORM。 我有一个简单的用户类。 import { Model } from "sequelize"; class User extends BaseMode
我正在为我的 API 客户端编写测试。我需要模拟 get 函数,以便它不会发出任何请求。因此,我不想返回 Response 对象,而是返回 MagicMock。但随后 pydantic 会引发 Val
我正在用 PHP 编写自己的 MVC 框架,仅用于学习目的。让路由器/调度程序类调用正确的 Controller /操作等并不难。 但是现在我要使用模型了。或者实际上,模型层。但有些事情让我感到困惑。
我似乎找不到任何简单地将 Pydantic BaseModel 列表转换为 Pandas Dataframe 的内置方法。 from pydantic import BaseModel import
我按照说明操作: 创建 bean。此 bean 用于使用 RestyGWT 从服务器传输到客户端的枚举。 public enum Mode{ MODIFY, EDIT, DELETE,
我正在使用 pydantic 检查参数文件的格式。如果参数名称中有拼写错误,我希望 pydantic 引发错误,但它没有。 例如,以下不会引发任何错误: from typing import Opti
考虑这段代码: from pydantic import BaseModel class MyModel(BaseModel): x: int appc = Celery(...) @appc.t
我昨天刚开始玩 Sencha 的 Ext GWT,但遇到了困难。我结合了 JSON 加载网格和可编辑网格中的方法。作为测试数据集,我使用《星际之门:亚特兰蒂斯》剧集列表,因此 SGAEpisode 定
我有以下使用 Pydantic BaseModel 数据类的代码 from enum import Enum import requests from pydantic import BaseMode
我想排除所有在创建 JSON 时未设置的 Optional 值。在这个例子中: from pydantic import BaseModel from typing import Optional c
这是关于@Andre Calil 在以下 SO 中提供的解决方案的问题 Razor MVC, where to put global variables that's accessible acros
当我尝试编写验证器时,我发现 FluentValidation (v8.2.0) 出现了一个奇怪的问题: System.InvalidCastException HResult=0x80004002
我是一名优秀的程序员,十分优秀!