python - Tortoise ORM - 具有 Postgresql 时间字段的 Pydantic 模型
问题描述
我正在尝试使用以 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)”错误
解决方案
推荐阅读
- laravel - Laravel:`php artisan app:name MyApp` 导致异常:内核不存在
- javascript - 当函数稍后出现错误时,console.log 不起作用
- visual-studio - 如何在 Visual Studio 中测量 Fortran 代码指标?
- excel - 如何更改选定单元格的值?
- spring-cloud - 将 Zuul、Hystrix(和 Feign)与 Spring Cloud HATEOAS 一起使用时如何转发标头?
- javafx - 如何设置组合框的文本颜色?
- corda - 如何解决 Corda 4 升级中的“找不到合同附件”异常
- mysql - 勺子将星期六从表格输入转换为星期五到表格输出
- c# - 如何获取组合框的选定项以绑定到对象
- excel - 将引用与公式连接会产生运行时错误