每次初始化对象时,从 pydantic 模型生成一个唯一值并将其应用于字段

Generate and apply an unique value to a field from a pydantic model each time an object is initialized

我正在使用 pydantic 制作一个模型,我想声明一个字段,每次创建一个对象时都会生成一个随机值(如 id)。我不想在初始化对象时传递该字段的值,这是我想要使用 python class 方法的快速示例:

from uuid import uuid4

class User:
    def __init__(self, name, last_name, email):
        self.name = name
        self.last_name = last_name
        self.email = email
        self.id = uuid4()

我试过用 pydantic 这样做:

from pydantic import BaseModel, EmailStr
from uuid import UUID, uuid4


class User(BaseModel):
    name: str
    last_name: str
    email: EmailStr
    id: UUID = uuid4()

但是,使用此模型创建的所有对象都具有相同的 uuid,所以我的问题是,如何在使用 pydantic 创建对象时生成唯一值(在本例中为 id 字段)。谢谢!

你可以这样做


from pydantic import BaseModel, EmailStr, Field
from uuid import UUID, uuid4


class User(BaseModel):
    name: str
    last_name: str
    email: EmailStr
    id: UUID = Field(default_factory=uuid4)