mirror of
https://github.com/fastapi-practices/fastapi-best-architecture.git
synced 2026-09-21 21:15:13 +00:00
Fix pydantic field and model validator (#427)
This commit is contained in:
@@ -3,6 +3,7 @@
|
|||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
from pydantic import ConfigDict, EmailStr, Field, HttpUrl, model_validator
|
from pydantic import ConfigDict, EmailStr, Field, HttpUrl, model_validator
|
||||||
|
from typing_extensions import Self
|
||||||
|
|
||||||
from backend.app.admin.schema.dept import GetDeptListDetails
|
from backend.app.admin.schema.dept import GetDeptListDetails
|
||||||
from backend.app.admin.schema.role import GetRoleListDetails
|
from backend.app.admin.schema.role import GetRoleListDetails
|
||||||
@@ -21,21 +22,21 @@ class AuthLoginParam(AuthSchemaBase):
|
|||||||
|
|
||||||
class RegisterUserParam(AuthSchemaBase):
|
class RegisterUserParam(AuthSchemaBase):
|
||||||
nickname: str | None = None
|
nickname: str | None = None
|
||||||
email: EmailStr = Field(..., example='user@example.com')
|
email: EmailStr = Field(..., examples=['user@example.com'])
|
||||||
|
|
||||||
|
|
||||||
class AddUserParam(AuthSchemaBase):
|
class AddUserParam(AuthSchemaBase):
|
||||||
dept_id: int
|
dept_id: int
|
||||||
roles: list[int]
|
roles: list[int]
|
||||||
nickname: str | None = None
|
nickname: str | None = None
|
||||||
email: EmailStr = Field(..., example='user@example.com')
|
email: EmailStr = Field(..., examples=['user@example.com'])
|
||||||
|
|
||||||
|
|
||||||
class UserInfoSchemaBase(SchemaBase):
|
class UserInfoSchemaBase(SchemaBase):
|
||||||
dept_id: int | None = None
|
dept_id: int | None = None
|
||||||
username: str
|
username: str
|
||||||
nickname: str
|
nickname: str
|
||||||
email: EmailStr = Field(..., example='user@example.com')
|
email: EmailStr = Field(..., examples=['user@example.com'])
|
||||||
phone: CustomPhoneNumber | None = None
|
phone: CustomPhoneNumber | None = None
|
||||||
|
|
||||||
|
|
||||||
@@ -80,7 +81,7 @@ class GetCurrentUserInfoDetail(GetUserInfoListDetails):
|
|||||||
roles: list[GetRoleListDetails] | list[str] | None = None
|
roles: list[GetRoleListDetails] | list[str] | None = None
|
||||||
|
|
||||||
@model_validator(mode='after')
|
@model_validator(mode='after')
|
||||||
def handel(self, values):
|
def handel(self) -> Self:
|
||||||
"""处理部门和角色"""
|
"""处理部门和角色"""
|
||||||
dept = self.dept
|
dept = self.dept
|
||||||
if dept:
|
if dept:
|
||||||
@@ -88,7 +89,7 @@ class GetCurrentUserInfoDetail(GetUserInfoListDetails):
|
|||||||
roles = self.roles
|
roles = self.roles
|
||||||
if roles:
|
if roles:
|
||||||
self.roles = [role.name for role in roles] # type: ignore
|
self.roles = [role.name for role in roles] # type: ignore
|
||||||
return values
|
return self
|
||||||
|
|
||||||
|
|
||||||
class CurrentUserIns(GetUserInfoListDetails):
|
class CurrentUserIns(GetUserInfoListDetails):
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
from pydantic import ConfigDict, Field, model_validator
|
from pydantic import ConfigDict, Field, model_validator
|
||||||
|
from typing_extensions import Self
|
||||||
|
|
||||||
from backend.app.generator.schema.gen_model import GetGenModelListDetails
|
from backend.app.generator.schema.gen_model import GetGenModelListDetails
|
||||||
from backend.common.schema import SchemaBase
|
from backend.common.schema import SchemaBase
|
||||||
@@ -21,7 +22,7 @@ class GenBusinessSchemaBase(SchemaBase):
|
|||||||
remark: str | None = None
|
remark: str | None = None
|
||||||
|
|
||||||
@model_validator(mode='after')
|
@model_validator(mode='after')
|
||||||
def check_schema_name(self):
|
def check_schema_name(self) -> Self:
|
||||||
if self.schema_name is None:
|
if self.schema_name is None:
|
||||||
self.schema_name = self.table_name_en
|
self.schema_name = self.table_name_en
|
||||||
return self
|
return self
|
||||||
|
|||||||
Reference in New Issue
Block a user