Pydantic-Modell: UUID beim Aufruf von .dict() in String konvertierenPython

Python-Programme
Anonymous
 Pydantic-Modell: UUID beim Aufruf von .dict() in String konvertieren

Post by Anonymous »

Ich versuche, das UUID-Feld in einen String umzuwandeln, wenn ich .dict() aufrufe, um es mit Pymongo in einer Monogdb zu speichern. Ich habe es mit .json() versucht, aber es scheint, als ob Mongodb es nicht mag

Code: Select all

TypeError: document must be an instance of dict, bson.son.SON, bson.raw_bson.RawBSONDocument, or a type that inherits from collections.MutableMapping
Das habe ich bisher gemacht:

Code: Select all

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)}
Irgendwelche Ratschläge?
Das Beste, was ich tun kann, ist, eine neue Methode namens to_dict() in diesem Modell zu erstellen und sie stattdessen aufzurufen

Code: Select all

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': ''}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post