每次初始化对象时,从 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)
我正在使用 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)