不通过别名分配 Pydantic 字段 2

问题描述 投票:0回答:1

为什么这对我的情况不起作用?

# Windows 10
# Python 3.11.8
# Pydantic 2.7.3
# Mypy 1.10.0
"""mypy.ini
[mypy]
plugins = pydantic.mypy
"""
# https://stackoverflow.com/questions/69433904/assigning-pydantic-fields-not-by-alias
from pydantic import BaseModel, Field, ConfigDict


class Params(BaseModel):
    var_name: int = Field(alias='var_alias')

    model_config = ConfigDict(
        populate_by_name=True,
    )

Params(var_alias=5)  # no works
Params(var_name=5)   # works
"""
mypy .\tess.py
tess.py:20: error: Missing named argument "var_name" for "Params"  [call-arg]
Found 1 error in 1 file (checked 1 source file)
"""

我的代码与不通过别名分配 Pydantic 字段相同,但我收到错误,我不明白为什么
预计:

mypy .\tess.py
Success: no issues found in 1 source file
python python-3.x pydantic pydantic-v2
1个回答
0
投票

似乎您需要添加默认值才能工作:

[mypy]
plugins = pydantic.mypy
from pydantic import BaseModel, Field, ConfigDict


class Params(BaseModel):
    var_name: int = Field(42, alias='var_alias')

    model_config = ConfigDict(
        populate_by_name=True,
    )

Params(var_alias=5)  # now works too
Params(var_name=5)   # works
Success: no issues found in 1 source file
© www.soinside.com 2019 - 2024. All rights reserved.