我正在尝试使用以 Postgresql 作为后端的 Tortoise ORM 创建 Pydantic 模型。我有列start_time
并end_time
在 Postgres 中定义为时间数据类型。我尝试了我的课程如下:
class Carb_Ratio(models.Model):
id = fields.UUIDField(pk=True, auto_generated=True)
client_id = fields.UUIDField()
ratio_type = fields.CharEnumField(RatioType)
carb_ratio = fields.DecimalField(max_digits=10, decimal_places=2)
start_time = fields.CharField(max_length=8)
end_time = fields.CharField(max_length=8)
insulin_sensitivity = fields.DecimalField(max_digits=10, decimal_places=2)
created_at = fields.DatetimeField(auto_now_add=True)
当我尝试创建记录时,我最终收到一条错误消息“tortoise.exceptions.OperationalError:查询参数 $5 的无效输入:''('str' 对象没有属性'hour')”
Tortoise 字段没有 TimeField,我什至尝试使用字段。DatetimeField 给了我“08:00:00”的无效日期时间格式
任何指向正确方向的指针都会有所帮助。提前致谢
更新:@Adrian Klaver 谢谢你的建议。我已将这些字段更改为 DatetimeField
start_time = fields.DatetimeField()
end_time = fields.DatetimeField()
我的输入值必须从
{
"client_id": "9181233d-0fa3-4844-bb28-ba1660be1415",
"ratio_type": "time_range",
"carb_ratio": 16,
"start_time": "17:00:01",
"end_time": "21:00:00",
"insulin_sensitivity": 6
}
至
{
"client_id": "9181233d-0fa3-4844-bb28-ba1660be1415",
"ratio_type": "time_range",
"carb_ratio": 16,
"start_time": "1900-01-01 17:00:01",
"end_time": "1900-01-01 21:00:00",
"insulin_sensitivity": 6
}
现在它能够正确插入值。然而,选择函数现在出现“iso8601.iso8601.ParseError: Expecting a string datetime.time(10, 0)”错误