mirror of
https://github.com/fastapiadmin/FastapiAdmin.git
synced 2026-09-21 04:46:26 +00:00
refactor(schema): 移除重复的模型验证逻辑并简化字段验证
统一移除各模块schema中重复的model_validator前置处理逻辑,改用更简洁的字段验证方式 优化字段验证逻辑,移除冗余的字符串处理和类型转换代码
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
from typing import Optional
|
||||
from pydantic import BaseModel, ConfigDict, Field, field_validator, model_validator
|
||||
from pydantic import BaseModel, ConfigDict, Field, field_validator
|
||||
|
||||
from app.core.base_schema import BaseSchema
|
||||
|
||||
@@ -15,33 +15,6 @@ class ParamsCreateSchema(BaseModel):
|
||||
status: bool = Field(default=True, description="状态(True:正常 False:停用)")
|
||||
description: Optional[str] = Field(default=None, max_length=500, description="描述")
|
||||
|
||||
@model_validator(mode='before')
|
||||
@classmethod
|
||||
def _normalize(cls, data):
|
||||
"""前置归一化:字符串去空格、空串转 None、布尔兼容转换,并规范键为小写。"""
|
||||
if isinstance(data, dict):
|
||||
for key in ('config_name', 'config_key', 'config_value', 'description'):
|
||||
val = data.get(key)
|
||||
if isinstance(val, str):
|
||||
val = val.strip()
|
||||
if key in ('config_value', 'description') and val == '':
|
||||
val = None
|
||||
data[key] = val
|
||||
# 规范键为小写
|
||||
if isinstance(data.get('config_key'), str):
|
||||
data['config_key'] = data['config_key'].lower()
|
||||
# 规范布尔
|
||||
for bkey in ('config_type', 'status'):
|
||||
val = data.get(bkey)
|
||||
if isinstance(val, str):
|
||||
lowered = val.strip().lower()
|
||||
if lowered in {'true', '1', 'y', 'yes'}:
|
||||
data[bkey] = True
|
||||
elif lowered in {'false', '0', 'n', 'no'}:
|
||||
data[bkey] = False
|
||||
elif isinstance(val, int):
|
||||
data[bkey] = bool(val)
|
||||
return data
|
||||
|
||||
@field_validator('config_key')
|
||||
@classmethod
|
||||
|
||||
Reference in New Issue
Block a user