Tortoise ORM 日期字段字符串序列化 Python

1,357 阅读1分钟

介绍

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