datetime.datetime' 对象不是可调用的 python



我目前正在使用FastAPI的API,它主要用于将传感器数据添加到我的mongodb数据库中。我还想添加一个时间戳(用于CET),这是自动写入mongodb数据库与传感器数据。

class DataModel(BaseModel):
id: PyObjectId = Field(default_factory=PyObjectId, alias="_id")
loc: str
sensor: str
temp: float
humi: float
press: float
power: float
timestamp: datetime = Field(default_factory=(datetime.utcnow()+timedelta(hours=1)))
class Config:
allow_population_by_field_name = True
arbitrary_types_allowed = True
json_encoders = {ObjectId: str}

一切正常,除了时间戳。这个错误发生:

{
"detail": [
{
"loc": [
"body"
],
"msg": "'datetime.datetime' object is not callable",
"type": "type_error"
}
]
}

我希望你知道可能的问题是什么。

{
"_id": "637b80a052feee6809711f2c",
"loc": "Mödling",
"sensor": "BME680",
"temp": 5.0,
"humi": 60.0,
"press": 1000.0,
"timestamp": "2022-11-21T13:44:00.371512"
},

这是我只使用datetime时的输出。没有括号,也没有时间增量。当我使用不带timedelta的datetime. utknow()时,也会出现同样的问题。

default_factory应该是一个函数,而您正在给出datetime.datetime类型

执行lambda函数:

timestamp: datetime = Field(default_factory= lambda : (datetime.utcnow()+timedelta(hours=1)))

最新更新