From 531b1ea75211155a4b76532826c7750c1cb087ef Mon Sep 17 00:00:00 2001 From: coderxslee Date: Mon, 20 Apr 2026 22:31:40 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93=E6=97=B6=20super=5Fcolumn=20?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E5=AF=BC=E8=87=B4=E7=9A=84=E5=88=9B=E5=BB=BA?= =?UTF-8?q?=E5=A4=B1=E8=B4=A5=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 问题: - 同步数据库接口 /api/v1/generator/gencode/sync_db/{table_name} 报错 - 错误信息:'super_column' is an invalid keyword argument for GenTableColumnModel 原因: - GenTableColumnOutSchema 包含 super_column 输出字段 - GenTableColumnModel 数据库模型不包含此字段 - 同步时直接使用 OutSchema 对象创建/更新数据库记录导致参数错误 解决方案: - 在创建/更新数据库记录前,将 GenTableColumnOutSchema 转换为 GenTableColumnSchema - 使用 model_dump(exclude={"super_column"}) 排除输出专用字段 - 确保传递给 CRUD 层的数据只包含数据库模型支持的字段 --- .../app/plugin/module_generator/gencode/service.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/backend/app/plugin/module_generator/gencode/service.py b/backend/app/plugin/module_generator/gencode/service.py index de007289..9c7fef8a 100644 --- a/backend/app/plugin/module_generator/gencode/service.py +++ b/backend/app/plugin/module_generator/gencode/service.py @@ -1052,16 +1052,21 @@ class GenTableService: # is_nullable:主键列以 DB 为准,其余保留用户设置 if not bool(getattr(column, "is_pk", False)) and hasattr(prev_column, "is_nullable"): column.is_nullable = prev_column.is_nullable + + # 转换为 GenTableColumnSchema,排除 super_column 等输出专用字段 + column_data = GenTableColumnSchema(**column.model_dump(exclude={"super_column"})) if hasattr(column, "id") and column.id: await GenTableColumnCRUD(auth).update_gen_table_column_crud( - column.id, column + column.id, column_data ) else: - await GenTableColumnCRUD(auth).create_gen_table_column_crud(column) + await GenTableColumnCRUD(auth).create_gen_table_column_crud(column_data) else: # 设置table_id以确保新字段能正确关联到表 column.table_id = table.id - await GenTableColumnCRUD(auth).create_gen_table_column_crud(column) + # 转换为 GenTableColumnSchema,排除 super_column 等输出专用字段 + column_data = GenTableColumnSchema(**column.model_dump(exclude={"super_column"})) + await GenTableColumnCRUD(auth).create_gen_table_column_crud(column_data) del_columns = [ column for column in table_columns