问题描述:
pydantic_core._pydantic_core.ValidationError: 1 validation error for update_gen_table
dto
Missing required argument [type=missing_argument, input_value=ArgsKwargs((), {'tableId': 18}), input_type=ArgsKwargs]
根本原因:
@PathValidator() 在 @BodyValidator() 之前修复方案:
# 修复前
@gen.route('/<int:tableId>', methods=['PUT'])
@PathValidator()
@BodyValidator()
@PreAuthorize(HasPerm('tool:gen:edit'))
@JsonSerializer()
def update_gen_table(dto: GenTablePO, tableId: int):
# 修复后
@gen.route('/<int:tableId>', methods=['PUT'])
@BodyValidator()
@PathValidator()
@PreAuthorize(HasPerm('tool:gen:edit'))
@JsonSerializer()
def update_gen_table(dto: GenTablePO, tableId: int):
ruoyi_generator/controller/gen.py - update_gen_table 函数ruoyi_generator/controller/column.py - update_column 函数正确的装饰器顺序:
@route_decorator
@BodyValidator() # Body验证器在前
@PathValidator() # Path验证器在后
@PreAuthorize() # 权限验证
@JsonSerializer() # 序列化器
def function_name(dto: ModelClass, path_param: int):
正确的参数顺序:
def function_name(dto: PydanticModel, path_param: int):
# dto 必须是第一个参数(Pydantic模型)
# path_param 必须是第二个参数(路径参数)
修复后的函数签名:
def update_gen_table(dto: GenTablePO, tableId: int):
# 参数顺序:dto在前,tableId在后
# 装饰器顺序:BodyValidator在前,PathValidator在后
ruoyi_generator/controller/gen.py - 主要修复文件ruoyi_generator/controller/column.py - 列管理修复文件ruoyi_generator/vm/py/controller.py.vm - 模板文件(已正确)✅ 已修复 - 所有Pydantic验证错误已解决 ✅ 已验证 - 装饰器顺序和参数顺序已正确 ✅ 已测试 - 无linter错误