介绍
Tortoise ORM 自带的DatetimeField日期字段,在接口返回中,不是字符串格式,无法正常序列化,如何优雅的统一处理呢?。
解决思路
1、老办法,重载日期字段 2、在序列化时加入自定义的格式解析器(这个在其他文章中再介绍,第一个够简单,保持“懒惰”)
代码
import datetime
from tortoise import fields
class DatetimeField(fields.DatetimeField):
"""重载日期时间模型字段"""
def __init__(self, *args, **kwargs):
super(DatetimeField, self).__init__(*args, **kwargs)
def to_python_value(self, value: datetime.datetime) -> [str, None]:
if value is None:
value = None
else:
try:
value = value.strftime("%Y-%m-%d %H:%M:%S")
self.validate(value)
except Exception as ex:
value = super(DatetimeField, self).to_python_value(value)
return value
fields.DatetimeField = DatetimeField
操作
从自定义的这个代码中引入fields模块,即可在定义模型时使用重载后的DatetimeField字段。
from 你的路径 import fields