From b9d506f6c119530efb3bb5aa9c624bcdafd33ad7 Mon Sep 17 00:00:00 2001 From: Wu Clan Date: Tue, 12 Aug 2025 23:32:19 +0800 Subject: [PATCH 1/2] Optimize the timezone datetime return encoder --- backend/common/schema.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/backend/common/schema.py b/backend/common/schema.py index cb944a1e..b472d4fc 100644 --- a/backend/common/schema.py +++ b/backend/common/schema.py @@ -6,6 +6,7 @@ from pydantic import BaseModel, ConfigDict, EmailStr, Field, validate_email from backend.core.conf import settings +from backend.utils.timezone import timezone # 自定义验证错误信息,参考: # https://github.com/pydantic/pydantic-core/blob/a5cb7382643415b716b1a7a5392914e50f726528/tests/test_errors.py#L266 @@ -124,5 +125,9 @@ class SchemaBase(BaseModel): model_config = ConfigDict( use_enum_values=True, - json_encoders={datetime: lambda x: x.strftime(settings.DATETIME_FORMAT)}, + json_encoders={ + datetime: lambda x: timezone.to_str(timezone.from_datetime(x)) + if x.tzinfo is not None + else x.strftime(settings.DATETIME_FORMAT) + }, ) From 867087c4af7dfce7724c2f7ec92e837e977528a6 Mon Sep 17 00:00:00 2001 From: Wu Clan Date: Wed, 13 Aug 2025 11:04:40 +0800 Subject: [PATCH 2/2] Update the default datetime conversion --- backend/common/schema.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/backend/common/schema.py b/backend/common/schema.py index b472d4fc..924d71e6 100644 --- a/backend/common/schema.py +++ b/backend/common/schema.py @@ -5,7 +5,6 @@ from pydantic import BaseModel, ConfigDict, EmailStr, Field, validate_email -from backend.core.conf import settings from backend.utils.timezone import timezone # 自定义验证错误信息,参考: @@ -128,6 +127,6 @@ class SchemaBase(BaseModel): json_encoders={ datetime: lambda x: timezone.to_str(timezone.from_datetime(x)) if x.tzinfo is not None - else x.strftime(settings.DATETIME_FORMAT) + else timezone.to_str(x) }, )