Python 3.x 使用Pydantic和Motor创建ISODate

Python 3.x 使用Pydantic和Motor创建ISODate,python-3.x,mongodb,fastapi,pydantic,Python 3.x,Mongodb,Fastapi,Pydantic,我正在使用FastAPI、Pydantic和创建一个简单的后端。 这是Python中的数据模型描述: from datetime import datetime, date from pydantic import BaseModel, Field, validator class ContactModel(BaseModel): """ Task MongoDB model: Ignoring _id since it use ObjectId

我正在使用FastAPI、Pydantic和创建一个简单的后端。 这是Python中的数据模型描述:

from datetime import datetime, date
from pydantic import BaseModel, Field, validator


class ContactModel(BaseModel):
    """
    Task MongoDB model: Ignoring _id since it use ObjectId
    """

    firstname: str = Field(...)
    surname: str = Field(...)
    birthday: datetime
    location: str = Field(...)

    @validator("birthday", pre=True)
    def parse_birthday(cls, value):
        birthday = datetime.strptime(value, "%d-%m-%Y")
        return birthday
POST路由器的FastAPI函数是这样编写的:

@router.post("/", response_description="Add new contact")
async def create_contact(request: Request, contact: ContactModel = Body(...)):
    json_contact = jsonable_encoder(contact)
    new_contact = await request.app.mongodb[collection].insert_one(json_contact)

    created_contact = await request.app.mongodb[collection].find_one(
        {"name": new_contact.inserted_id}
    )
    return JSONResponse(status_code=status.HTTP_201_CREATED, content=created_contact)
使用我的后端发送新条目后,Mongo Shell的输出不会显示生日字段的ISOData:

{ "_id" : ObjectId("60a126ec73407fc9aea5c1df"), "firstname" : "Andy", "surname" : "Gray", "birthday" : "2002-03-01T00:00:00", "location" : "Paris" }
我的实现有什么问题? 通常,如果我只需要日期,为什么我要使用ISODate而不是日期字符串