From 3c2d21981de29500692755e3dfe50d82259a3e9c Mon Sep 17 00:00:00 2001 From: jingrow Date: Sun, 9 Nov 2025 22:22:23 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=9B=BE=E7=89=87=E4=B8=8A?= =?UTF-8?q?=E4=BC=A0=E8=8A=82=E7=82=B9=E6=97=A0=E6=B3=95=E4=B8=8A=E4=BC=A0?= =?UTF-8?q?=E5=9B=BE=E7=89=87=E5=88=B0=E5=AD=90=E8=A1=A8=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ai/nodes/image_upload/image_upload.py | 47 ++++++++++--------- 1 file changed, 24 insertions(+), 23 deletions(-) diff --git a/apps/jingrow/jingrow/ai/nodes/image_upload/image_upload.py b/apps/jingrow/jingrow/ai/nodes/image_upload/image_upload.py index 8138a01..0dde8ce 100644 --- a/apps/jingrow/jingrow/ai/nodes/image_upload/image_upload.py +++ b/apps/jingrow/jingrow/ai/nodes/image_upload/image_upload.py @@ -240,11 +240,9 @@ def execute(context=None, inputs=None, config=None, **kwargs): # 对于子表字段,attached_to_field保存了原始格式(如items[0].image) # 对于普通字段,attached_to_field是映射后的字段名 if is_subtable_field and attached_to_field: - # 检测是否为子表字段格式:只支持更新已有行(支持中文字段名) + # 解析子表字段格式:fieldname[index].subfield subtable_match = re.match(r'^([\w\u4e00-\u9fa5]+)\[(\d+)\]\.([\w\u4e00-\u9fa5]+)$', attached_to_field) - if subtable_match: - # 处理子表字段:更新指定行的字段值 subtable_field, row_index_str, field_name = subtable_match.groups() row_index = int(row_index_str) @@ -258,27 +256,30 @@ def execute(context=None, inputs=None, config=None, **kwargs): attached_to_pagetype, attached_to_name, subtable_fieldname ) or [] - # 只更新已有行,不添加新行 - if 0 <= row_index < len(subtable_data): - if not isinstance(subtable_data[row_index], dict): - subtable_data[row_index] = {} - subtable_data[row_index][field_fieldname] = file_url - - # 更新整个子表字段 - update_api_url = f"{Config.jingrow_server_url}/api/action/jingrow.client.set_value" - headers = get_jingrow_api_headers() - if headers: - update_data = { - 'pagetype': attached_to_pagetype, - 'name': attached_to_name, - 'fieldname': subtable_fieldname, - 'value': json.dumps(subtable_data, ensure_ascii=False) - } - requests.post(update_api_url, json=update_data, headers=headers, timeout=10) + # 更新指定行的字段值 + if isinstance(subtable_data, list) and 0 <= row_index < len(subtable_data): + if isinstance(subtable_data[row_index], dict): + subtable_data[row_index][field_fieldname] = file_url + + # 更新整个子表字段 + update_api_url = f"{Config.jingrow_server_url}/api/action/jingrow.client.set_value" + headers = get_jingrow_api_headers() + if headers: + requests.post( + update_api_url, + json={ + 'pagetype': attached_to_pagetype, + 'name': attached_to_name, + 'fieldname': subtable_fieldname, + 'value': subtable_data + }, + headers=headers, + timeout=10 + ) + else: + log_error(f"子表第 {row_index} 行数据格式错误") else: - log_error(f"子表行索引 {row_index} 超出范围,请先创建子表行") - else: - log_error(f"子表字段格式解析失败: {attached_to_field}") + log_error(f"子表行索引 {row_index} 超出范围") elif attached_to_field: # 普通字段更新 update_api_url = f"{Config.jingrow_server_url}/api/action/jingrow.client.set_value"