- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想从字符串数组中初始化一个 pydantic 文字
from typing import Literal
from pydantic import BaseModel
CLASS_NAME_VALUES = ["primary", "secondary", "success", "danger", "warning", "info", "dark"]
ICON_NAME_VALUES = ["electricity.svg", "water.svg",
"internet.svg", "naturalGas.svg", "noCategory.svg"]
class CategoryRequest(BaseModel):
class_name: Literal[CLASS_NAME_VALUES]
icon_name: Literal[ICON_NAME_VALUES]
但我收到以下错误
File "pydantic/main.py", line 252, in pydantic.main.ModelMetaclass.__new__
File "pydantic/fields.py", line 309, in pydantic.fields.ModelField.infer
File "pydantic/fields.py", line 271, in pydantic.fields.ModelField.__init__
File "pydantic/fields.py", line 351, in pydantic.fields.ModelField.prepare
File "pydantic/fields.py", line 529, in pydantic.fields.ModelField.populate_validators
File "pydantic/validators.py", line 566, in find_validators
File "pydantic/validators.py", line 410, in pydantic.validators.make_literal_validator
TypeError: unhashable type: 'list'
有什么建议吗?
最佳答案
在运行时,允许任意值作为 Literal[...]
的类型参数。 ,但类型检查器可能会施加限制。例如,mypy
只允许一个或多个文字 bool
, int
, str
, bytes
, enum
值,None
和其他别名 Literal
类型。例如,Literal[3 + 4]
或 List[(3, 4)]
被禁止。
至于pydantic
,它允许在 Literal
中使用可散列类型的值, 喜欢 tuple
.例如,您的示例可以使用 tuple
重写。作为:
from typing import Literal
from pydantic import BaseModel
CLASS_NAME_VALUES = ("primary", "secondary", "success", "danger", "warning", "info", "dark")
ICON_NAME_VALUES = ("electricity.svg", "water.svg",
"internet.svg", "naturalGas.svg", "noCategory.svg")
class CategoryRequest(BaseModel):
class_name: Literal[CLASS_NAME_VALUES]
icon_name: Literal[ICON_NAME_VALUES]
但我强烈建议不要使用这种语法,而是坚持使用
canonical一,这也是类型检查器允许的:
CLASS_NAME_VALUES = Literal["primary", "secondary", "success", "danger", "warning", "info", "dark"]
ICON_NAME_VALUES = Literal["electricity.svg", "water.svg",
"internet.svg", "naturalGas.svg", "noCategory.svg"]
class CategoryRequest(BaseModel):
class_name: CLASS_NAME_VALUES
icon_name: ICON_NAME_VALUES
关于python - 从字符串数组初始化pydantic Literal,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65675648/
我正在使用 Pydantic 为对象建模。如何使两个字段互斥? 例如,如果我有以下模型: class MyModel(pydantic.BaseModel): a: typing.Option
我正在使用 Pydantic 为对象建模。如何使两个字段互斥? 例如,如果我有以下模型: class MyModel(pydantic.BaseModel): a: typing.Option
在前面随笔《基于SqlAlchemy+Pydantic+FastApi的Python开发框架 》中介绍了框架总体的内容,其中主要的理念就是通过抽象接口的方式,实现代码的重用,提高开发效率。本
随着大环境的跨平台需求越来越多,对与开发环境和实际运行环境都有跨平台的需求,Python开发和部署上都是跨平台的,本篇随笔介绍基于SqlAlchemy+Pydantic+FastApi的Python开
下面代码来自官方FastAPI tutorials page ,我无法理解这些语句(例如,name: str)。 from typing import Optional from fastapi im
我在 Pydantic 中有一个嵌套模型。我在外部模型中有一个 root_validator 函数。我的印象是,如果调用外部根验证器,则内部模型有效。但显然不是。在下面的 MWE 中,我为内部模型提供
目前,我正在尝试为 Pandas 数据框创建一个 pydantic 模型。我想通过以下检查列是否唯一 import pandas as pd from typing import List from
我想将日期的 json 输入验证为 pydantic 类,接下来,简单地将文件注入(inject) Mongo。 带有日期类型的简单类 class CustomerBase(BaseModel):
我有以下模型 class Window(BaseModel): size: tuple[int, int] 我想像这样实例化它: fields = {'size': '1920x1080'}
我的问题很简单,令我惊讶的是到目前为止还没有人问过它: 我如何在 pydantic 中验证日期? 例如,我只想接受 1980.1.1-2000.1.1 范围内的日期。 最佳答案 validator d
是否可以为不可变 Pydantic Models 传递函数 setter ? . 例如: from uuid import uuid4, UUID from pydantic import BaseM
我正在尝试删除名字和姓氏字段以及电子邮件字段上的空格。我无法让它工作。 from pydantic import BaseModel, UUID4, SecretStr, EmailStr, cons
来自 pydantic docs我明白这一点: import pydantic class User(pydantic.BaseModel): id: int name: str cl
我试图将类中的一个字段限制为枚举。但是,当我尝试从类中获取字典时,它不会转换为字符串。相反,它保留了枚举。我查了 pydantic documentation ,但找不到与我的问题相关的任何内容。 这
我想根据特定条件动态分配字段数据类型。以下是我的模型: class Connection(BaseModel): name: str # type can be GCS or ORAC
我尝试按如下方式使用 Pydantic: from pydantic import BaseModel class A(BaseModel): prop1: str prop2: str cl
我遵循定义的 pydantic 模型。当我运行 p = IntOrStr(value=True) 时,我预计会失败,因为 True 是 bool 值,它应该会导致对 __int 和 __str cla
我遵循定义的 pydantic 模型。当我运行 p = IntOrStr(value=True) 时,我预计会失败,因为 True 是 bool 值,它应该会导致对 __int 和 __str cla
当我想使用 attr 库忽略某些字段时,我可以使用 repr=False 选项。 但是我在 pydantic 中找不到类似的选项 请看示例代码 import typing import attr fr
Pydantic 在将模型传递给另一个模型的构造函数时复制模型。这失败了: from pydantic import BaseModel class Child(BaseModel): pas
我是一名优秀的程序员,十分优秀!