From 3120c14ae36099a472e95a1e5c4d926504395ef5 Mon Sep 17 00:00:00 2001 From: Gursheen Anand Date: Tue, 3 Feb 2026 00:32:45 +0530 Subject: [PATCH 1/3] fix: return correct title for link field as title --- frappe/public/js/frappe/model/model.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/frappe/public/js/frappe/model/model.js b/frappe/public/js/frappe/model/model.js index 15af61b2c0..abf7adec45 100644 --- a/frappe/public/js/frappe/model/model.js +++ b/frappe/public/js/frappe/model/model.js @@ -614,7 +614,12 @@ $.extend(frappe.model, { } let meta = frappe.get_meta(doc.doctype); if (meta.title_field) { - return doc[meta.title_field]; + let df = meta.fields.find((df) => df.fieldname === meta.title_field); + let title_value = doc[meta.title_field]; + if (df && df.fieldtype === "Link") { + title_value = frappe.utils.get_link_title(df.options, title_value) ?? title_value; + } + return title_value; } else { return String(doc.name); } From f88343cf7b3823fceb2b46a7b62748d4f8ac3631 Mon Sep 17 00:00:00 2001 From: Gursheen Anand Date: Tue, 3 Feb 2026 00:37:43 +0530 Subject: [PATCH 2/3] refactor: separate function for docs where title field is set --- frappe/public/js/frappe/model/model.js | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/frappe/public/js/frappe/model/model.js b/frappe/public/js/frappe/model/model.js index abf7adec45..5d9dd6c5ec 100644 --- a/frappe/public/js/frappe/model/model.js +++ b/frappe/public/js/frappe/model/model.js @@ -606,6 +606,17 @@ $.extend(frappe.model, { } }, + get_title_from_title_field: function (doc, meta) { + let df = meta.fields.find((df) => df.fieldname === meta.title_field); + let title_value = doc[meta.title_field]; + + if (df && df.fieldtype === "Link") { + title_value = frappe.utils.get_link_title(df.options, title_value) ?? title_value; + } + + return title_value; + }, + get_doc_title(doc) { if (typeof doc.name == "string") { if (doc.name.startsWith("new-" + doc.doctype.toLowerCase().replace(/ /g, "-"))) { @@ -614,12 +625,7 @@ $.extend(frappe.model, { } let meta = frappe.get_meta(doc.doctype); if (meta.title_field) { - let df = meta.fields.find((df) => df.fieldname === meta.title_field); - let title_value = doc[meta.title_field]; - if (df && df.fieldtype === "Link") { - title_value = frappe.utils.get_link_title(df.options, title_value) ?? title_value; - } - return title_value; + return this.get_title_from_title_field(doc, meta); } else { return String(doc.name); } From 60108e863dc95366867b590d0ddb960061a43d35 Mon Sep 17 00:00:00 2001 From: Gursheen Anand Date: Tue, 3 Feb 2026 01:40:40 +0530 Subject: [PATCH 3/3] fix: accommodate dynamic link type title field --- frappe/public/js/frappe/model/model.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/frappe/public/js/frappe/model/model.js b/frappe/public/js/frappe/model/model.js index 5d9dd6c5ec..5b4a8c5824 100644 --- a/frappe/public/js/frappe/model/model.js +++ b/frappe/public/js/frappe/model/model.js @@ -610,8 +610,9 @@ $.extend(frappe.model, { let df = meta.fields.find((df) => df.fieldname === meta.title_field); let title_value = doc[meta.title_field]; - if (df && df.fieldtype === "Link") { - title_value = frappe.utils.get_link_title(df.options, title_value) ?? title_value; + if (df?.fieldtype && ["Link", "Dynamic Link"].includes(df.fieldtype)) { + const doctype = df.fieldtype === "Dynamic Link" ? doc[df.options] : df.options; + title_value = frappe.utils.get_link_title(doctype, title_value) ?? title_value; } return title_value;