Skip to content

Commit 0255283

Browse files
authored
Fix the return datetime data encoder (#505)
1 parent 2df1f0f commit 0255283

File tree

2 files changed

+8
-7
lines changed

2 files changed

+8
-7
lines changed

backend/common/response/response_schema.py

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
11
#!/usr/bin/env python3
22
# -*- coding: utf-8 -*-
3-
from datetime import datetime
43
from typing import Any, Generic, TypeVar
54

65
from fastapi import Response
7-
from pydantic import BaseModel, ConfigDict
6+
from pydantic import BaseModel
87

98
from backend.common.response.response_code import CustomResponse, CustomResponseCode
10-
from backend.core.conf import settings
119
from backend.utils.serializers import MsgSpecJSONResponse
1210

1311
SchemaT = TypeVar('SchemaT')
@@ -35,9 +33,6 @@ def test() -> ResponseModel:
3533
return ResponseModel(code=res.code, msg=res.msg, data={'test': 'test'})
3634
"""
3735

38-
# TODO: json_encoders 配置失效: https://github.com/tiangolo/fastapi/discussions/10252
39-
model_config = ConfigDict(json_encoders={datetime: lambda x: x.strftime(settings.DATETIME_FORMAT)})
40-
4136
code: int = CustomResponseCode.HTTP_200.code
4237
msg: str = CustomResponseCode.HTTP_200.msg
4338
data: Any | None = None

backend/common/schema.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
#!/usr/bin/env python3
22
# -*- coding: utf-8 -*-
3+
from datetime import datetime
34

45
from pydantic import BaseModel, ConfigDict, EmailStr, validate_email
56
from pydantic_extra_types.phone_numbers import PhoneNumber
67

8+
from backend.core.conf import settings
9+
710
# 自定义验证错误信息不包含验证预期内容(也就是输入内容),受支持的预期内容字段参考以下链接
811
# https://github.com/pydantic/pydantic-core/blob/a5cb7382643415b716b1a7a5392914e50f726528/tests/test_errors.py#L266
912
# 替换预期内容字段方式,参考以下链接
@@ -150,4 +153,7 @@ def _validate(cls, __input_value: str) -> str:
150153

151154

152155
class SchemaBase(BaseModel):
153-
model_config = ConfigDict(use_enum_values=True)
156+
model_config = ConfigDict(
157+
use_enum_values=True,
158+
json_encoders={datetime: lambda x: x.strftime(settings.DATETIME_FORMAT)},
159+
)

0 commit comments

Comments
 (0)