diff --git a/backend/common/response/response_schema.py b/backend/common/response/response_schema.py index 64ca4617..a75a48ee 100644 --- a/backend/common/response/response_schema.py +++ b/backend/common/response/response_schema.py @@ -1,13 +1,11 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- -from datetime import datetime from typing import Any, Generic, TypeVar from fastapi import Response -from pydantic import BaseModel, ConfigDict +from pydantic import BaseModel from backend.common.response.response_code import CustomResponse, CustomResponseCode -from backend.core.conf import settings from backend.utils.serializers import MsgSpecJSONResponse SchemaT = TypeVar('SchemaT') @@ -35,9 +33,6 @@ class ResponseModel(BaseModel): return ResponseModel(code=res.code, msg=res.msg, data={'test': 'test'}) """ - # TODO: json_encoders 配置失效: https://github.com/tiangolo/fastapi/discussions/10252 - model_config = ConfigDict(json_encoders={datetime: lambda x: x.strftime(settings.DATETIME_FORMAT)}) - code: int = CustomResponseCode.HTTP_200.code msg: str = CustomResponseCode.HTTP_200.msg data: Any | None = None diff --git a/backend/common/schema.py b/backend/common/schema.py index 00b54425..edc84d52 100644 --- a/backend/common/schema.py +++ b/backend/common/schema.py @@ -1,9 +1,12 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- +from datetime import datetime from pydantic import BaseModel, ConfigDict, EmailStr, validate_email from pydantic_extra_types.phone_numbers import PhoneNumber +from backend.core.conf import settings + # 自定义验证错误信息不包含验证预期内容(也就是输入内容),受支持的预期内容字段参考以下链接 # https://github.com/pydantic/pydantic-core/blob/a5cb7382643415b716b1a7a5392914e50f726528/tests/test_errors.py#L266 # 替换预期内容字段方式,参考以下链接 @@ -150,4 +153,7 @@ class CustomEmailStr(EmailStr): class SchemaBase(BaseModel): - model_config = ConfigDict(use_enum_values=True) + model_config = ConfigDict( + use_enum_values=True, + json_encoders={datetime: lambda x: x.strftime(settings.DATETIME_FORMAT)}, + )