为使用了 alias 的 pydantic model 设置 populate_by_name

This commit is contained in:
2024-05-07 08:32:39 +08:00
parent e9b3c30a13
commit 17690e673f
4 changed files with 63 additions and 4 deletions

View File

@@ -1,4 +1,5 @@
from pydantic import BaseModel, Field
from nonebot.compat import PYDANTIC_V2
from pydantic import BaseModel, ConfigDict, Field
from ..typing import Rank
from .base import FailedModel
@@ -13,6 +14,12 @@ class _User(BaseModel):
supporter: bool
verified: bool
country: str | None = None
if PYDANTIC_V2:
model_config = ConfigDict(populate_by_name=True)
else:
class Config:
allow_population_by_field_name = True
class SuccessModel(BaseSuccessModel):

View File

@@ -1,7 +1,8 @@
from datetime import datetime
from typing import Literal
from pydantic import BaseModel, Field
from nonebot.compat import PYDANTIC_V2
from pydantic import BaseModel, ConfigDict, Field
from ..typing import Rank
from .base import FailedModel
@@ -113,6 +114,12 @@ class SuccessModel(BaseSuccessModel):
connections: Connections
friend_count: int | None = None
distinguishment: Distinguishment | None = None
if PYDANTIC_V2:
model_config = ConfigDict(populate_by_name=True)
else:
class Config:
allow_population_by_field_name = True
user: User

View File

@@ -1,6 +1,7 @@
from datetime import datetime
from pydantic import BaseModel, Field
from nonebot.compat import PYDANTIC_V2
from pydantic import BaseModel, ConfigDict, Field
from .base import FailedModel
from .base import SuccessModel as BaseSuccessModel
@@ -66,11 +67,23 @@ class EndContext(BaseModel):
finesse: Finesse
final_time: float = Field(..., alias='finalTime')
gametype: str
if PYDANTIC_V2:
model_config = ConfigDict(populate_by_name=True)
else:
class Config:
allow_population_by_field_name = True
class _User(BaseModel):
id: str = Field(..., alias='_id')
username: str
if PYDANTIC_V2:
model_config = ConfigDict(populate_by_name=True)
else:
class Config:
allow_population_by_field_name = True
class _Record(BaseModel):
@@ -80,6 +93,12 @@ class _Record(BaseModel):
user: _User
ts: datetime
ismulti: bool | None = None
if PYDANTIC_V2:
model_config = ConfigDict(populate_by_name=True)
else:
class Config:
allow_population_by_field_name = True
class BaseModeRecord(BaseModel):
@@ -102,6 +121,12 @@ class SuccessModel(BaseSuccessModel):
sprint: Sprint = Field(..., alias='40l')
blitz: Blitz
if PYDANTIC_V2:
model_config = ConfigDict(populate_by_name=True)
else:
class Config:
allow_population_by_field_name = True
class Zen(BaseModel):
level: int

View File

@@ -1,7 +1,8 @@
from datetime import datetime
from typing import Literal
from pydantic import BaseModel, Field
from nonebot.compat import PYDANTIC_V2
from pydantic import BaseModel, ConfigDict, Field
class SuccessModel(BaseModel):
@@ -16,6 +17,12 @@ class SuccessModel(BaseModel):
win: str
lose: str
score: str
if PYDANTIC_V2:
model_config = ConfigDict(populate_by_name=True)
else:
class Config:
allow_population_by_field_name = True
class UserDataTotalItem(BaseModel):
time_map: str = Field(..., alias='timeMap')
@@ -48,6 +55,12 @@ class SuccessModel(BaseModel):
tspin_no_map: str = Field(..., alias='tspinNoMap')
b2b_no_map: str = Field(..., alias='b2bNoMap')
perfect_clear_no_map: str = Field(..., alias='perfectClearNoMap')
if PYDANTIC_V2:
model_config = ConfigDict(populate_by_name=True)
else:
class Config:
allow_population_by_field_name = True
teaid: str = Field(..., alias='teaId')
name: str
@@ -72,6 +85,13 @@ class SuccessModel(BaseModel):
register_date: datetime = Field(..., alias='registerDate')
last_login_date: datetime = Field(..., alias='lastLoginDate')
if PYDANTIC_V2:
model_config = ConfigDict(populate_by_name=True)
else:
class Config:
allow_population_by_field_name = True
code: int
success: Literal[True]
data: Data