Pydantic 字段 JSON 别名根本不起作用

Jen*_*nov 1 python pydantic fastapi

我需要为 Pydantic 对象指定一个 JSON 别名。它根本不起作用。

from pydantic import Field
from pydantic.main import BaseModel


class ComplexObject(BaseModel):
    for0: str = Field(None, alias="for")


def create(x: int, y: int):
    print("was here")
    co = ComplexObject(for0=str(x * y))
    return co


co = create(x=1, y=2)
print(co.json(by_alias=True))
Run Code Online (Sandbox Code Playgroud)

这个的输出是{"for" : null而不是{"for" : "2"}

这是真的吗?这样一个简单的用例怎么可能不起作用?

小智 5

您需要使用别名进行对象初始化。ComplexObject(for=str(x * y)) 但是for在python中不能这样使用,因为它表示一个循环!你可以这样使用它:co = ComplexObject(**{"for": str(x * y)})

  • 另外,通常的做法是使用结尾带有下划线的 for_ 或 map_ ,而不是使用“for”或“map”等保留字 (2认同)