感谢您的时间。
我试图在使用 pymongo 将 UUID 字段转换为字符串并调用 .dict()
方法保存到 monogdb 时进行转换。我尝试使用 .json()
,但似乎 mongodb 不喜欢它:
TypeError: document must be an instance of dict, bson.son.SON, bson.raw_bson.RawBSONDocument, or a type that inherits from collections.MutableMapping
这是我目前所做的:
from uuid import uuid4
from datetime import datetime
from pydantic import BaseModel, Field, UUID4
class TestModel(BaseModel):
id: UUID4 = Field(default_factory=uuid4)
title: str = Field(default="")
ts: datetime = Field(default_factory=datetime.utcnow)
record = TestModel()
record.title = "Hello!"
print(record.json())
# {"id": "4d52517a-88a0-43f8-9d9a-df9d7b6ddf01", "title": "Hello!", "ts": "2021-08-18T03:00:54.913345"}
print(record.dict())
# {'id': UUID('4d52517a-88a0-43f8-9d9a-df9d7b6ddf01'), 'title': 'Hello!', 'ts': datetime.datetime(2021, 8, 18, 3, 0, 54, 913345)}
任何建议?谢谢。
我能做的最好的方法是在该模型内创建一个名为
to_dict()
的新方法,并调用它。class TestModel(BaseModel):
id: UUID4 = Field(default_factory=uuid4)
title: str = Field(default="")
def to_dict(self):
data = self.dict()
data["id"] = self.id.hex
return data
record = TestModel()
print(record.to_dict())
# {'id': '03c088da40e84ee7aa380fac82a839d6', 'title': ''}