Python 3.x 使用Pydantic和Motor创建ISODate
我正在使用FastAPI、Pydantic和创建一个简单的后端。 这是Python中的数据模型描述: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
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而不是日期字符串