OptionalClientModel = create_model(
"OptionalClientModel",
**{k: (Optional[v], None) for k, v in get_annotations(ClientModel).items()})
原始课程如下
from typing import Annotated
from bson import ObjectId
from pydantic import Field
from pydantic import EmailStr
from pydantic import BaseModel
from pydantic import ConfigDict
from pydantic import AwareDatetime
from pydantic import field_validator
# Represents an ObjectId field in the database.
# It will be represented as a `str` on the model so that it can
# be serialized to JSON.
PyObjectId = Annotated[str, BeforeValidator(str)]
class DBTableBase(BaseModel):
# The primary key for the Table, stored as a `str` on the instance.
# This will be aliased to `_id` when sent to MongoDB,
# but provided as `id` in the API requests and responses.
id: PyObjectId | None = Field(alias="_id",
serialization_alias="id",
default=None)
model_config = ConfigDict(
json_encoders={ObjectId: str},
json_schema_extra={
"example": {
"id": "BSON_ID"
}
},
)
class ClientModel(DBTableBase):
first_name: str
last_name: str
当我想要具有所有可选值的型号时,我可以使用OptionalClientModel
问题是,
id
没有任何Alia。
如何与别名创建可选?
OptionalClientModel