From a6e90280906bd5c26ec8d6ee9c2edf0799529364 Mon Sep 17 00:00:00 2001 From: Faris Ansari Date: Sat, 24 May 2025 02:37:04 +0530 Subject: [PATCH] fix: cast link fields that are int to string - id fields should always be string - easier to manage in typed code in frontend --- frappe/api/v2.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/frappe/api/v2.py b/frappe/api/v2.py index 01570ae989..b372bd1adc 100644 --- a/frappe/api/v2.py +++ b/frappe/api/v2.py @@ -15,7 +15,7 @@ from werkzeug.routing import Rule import frappe import frappe.client -from frappe import _, cint, get_newargs, is_whitelisted +from frappe import _, cint, cstr, get_newargs, is_whitelisted from frappe.core.doctype.server_script.server_script_utils import get_server_script_map from frappe.handler import is_valid_http_method, run_server_script, upload_file @@ -65,7 +65,14 @@ def read_doc(doctype: str, name: str): doc = frappe.get_doc(doctype, name) doc.check_permission("read") doc.apply_fieldlevel_read_permissions() - return doc.as_dict() + _doc = doc.as_dict() + + for key in _doc: + df = doc.meta.get_field(key) + if df and df.fieldtype == "Link" and isinstance(_doc.get(key), int): + _doc[key] = cstr(_doc.get(key)) + + return _doc def document_list(doctype: str):