Files
FastapiAdmin/backend/app/api/v1/module_system/dept/schema.py
T
zhangtao b678588d13 refactor(schema): 移除重复的模型验证逻辑并简化字段验证
统一移除各模块schema中重复的model_validator前置处理逻辑,改用更简洁的字段验证方式
优化字段验证逻辑,移除冗余的字符串处理和类型转换代码
2025-11-11 23:34:30 +08:00

50 lines
1.7 KiB
Python

# -*- coding: utf-8 -*-
from typing import Optional
from pydantic import BaseModel, ConfigDict, Field, field_validator
from app.core.base_schema import BaseSchema
class DeptCreateSchema(BaseModel):
"""部门创建模型"""
name: str = Field(..., max_length=40, description="部门名称")
order: int = Field(default=1, ge=0, description="显示顺序")
code: Optional[str] = Field(default=None, max_length=60, description="部门编码")
status: bool = Field(default=True, description="是否启用(True:启用 False:禁用)")
parent_id: Optional[int] = Field(default=None, ge=0, description="父部门ID")
description: Optional[str] = Field(default=None, max_length=255, description="备注说明")
@field_validator('name')
@classmethod
def validate_name(cls, value: str):
if not value or len(value.strip()) == 0:
raise ValueError("部门名称不能为空")
value = value.replace(" ", "")
return value
@field_validator('code')
@classmethod
def validate_code(cls, value: Optional[str]):
if value is None:
return value
v = value.strip()
if v == "":
return None
import re
if not re.match(r'^[A-Za-z][A-Za-z0-9_]*$', v):
raise ValueError("部门编码必须以字母开头,且仅包含字母/数字/下划线")
return v
class DeptUpdateSchema(DeptCreateSchema):
"""部门更新模型"""
...
class DeptOutSchema(DeptCreateSchema, BaseSchema):
"""部门响应模型"""
model_config = ConfigDict(from_attributes=True)
parent_name: Optional[str] = Field(default=None, max_length=40, description="父部门名称")