Skip to content

Commit e3a74d6

Browse files
author
JiayuXu
committed
fix: 修复响应模型中msg=None时的Pydantic验证错误
1 parent fec6c72 commit e3a74d6

2 files changed

Lines changed: 22 additions & 1 deletion

File tree

src/schemas/base.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ def __init__(
1111
data: Any | None = None,
1212
**kwargs,
1313
):
14+
# 确保msg不为None
15+
if msg is None:
16+
msg = "OK"
1417
content = {"code": code, "msg": msg, "data": data}
1518
content.update(kwargs)
1619
super().__init__(content=content, status_code=code)
@@ -24,6 +27,9 @@ def __init__(
2427
data: Any | None = None,
2528
**kwargs,
2629
):
30+
# 确保msg不为None
31+
if msg is None:
32+
msg = "Error"
2733
content = {"code": code, "msg": msg, "data": data}
2834
content.update(kwargs)
2935
super().__init__(content=content, status_code=code)
@@ -40,6 +46,9 @@ def __init__(
4046
page_size: int = 20,
4147
**kwargs,
4248
):
49+
# 确保msg不为None
50+
if msg is None:
51+
msg = "OK"
4352
content = {
4453
"code": code,
4554
"msg": msg,

src/schemas/response.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"""
55
from typing import Any, Generic, TypeVar
66
from datetime import datetime
7-
from pydantic import BaseModel, Field
7+
from pydantic import BaseModel, Field, field_validator
88

99
T = TypeVar("T")
1010

@@ -15,6 +15,12 @@ class ResponseBase(BaseModel, Generic[T]):
1515
msg: str = Field(default="OK", description="响应消息")
1616
data: T | None = Field(default=None, description="响应数据")
1717

18+
@field_validator("msg", mode="before")
19+
@classmethod
20+
def set_default_msg(cls, v):
21+
"""当msg为None时,设置默认值"""
22+
return "OK" if v is None else v
23+
1824
class Config:
1925
json_schema_extra = {
2026
"example": {
@@ -34,6 +40,12 @@ class PageResponse(BaseModel, Generic[T]):
3440
page: int = Field(default=1, description="当前页码")
3541
page_size: int = Field(default=20, description="每页数量")
3642

43+
@field_validator("msg", mode="before")
44+
@classmethod
45+
def set_default_msg(cls, v):
46+
"""当msg为None时,设置默认值"""
47+
return "OK" if v is None else v
48+
3749
class Config:
3850
json_schema_extra = {
3951
"example": {

0 commit comments

Comments
 (0)