You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Customer Doctype中添加Tree类型字段,设置Territory仅可选叶子节点

在Customer Doctype中添加树形Territory链接字段(仅允许选叶子节点)

前提准备:确保Territory是Tree类型Doctype

  • 若未创建Territory Doctype,新建时勾选Is Tree选项,系统会自动生成父节点字段(如parent_territory)和is_leaf标识字段(自动维护节点是否为叶子)。
  • 若已存在Territory,进入Doctype编辑页面,开启Is Tree开关,保存后系统会自动补充树形结构所需字段。

在Customer Doctype中添加字段

  1. 进入Customize Form,选择Customer Doctype。
  2. 点击Add Field,配置以下参数:
    • 字段名:territory(可自定义)
    • 标签:Territory
    • 类型:Link
    • 选项:Territory(关联到树形结构的Territory Doctype)
    • 切换到Advanced标签,勾选Tree Select选项,字段将以树形选择器展示,替代普通下拉列表。

限制仅允许选择叶子节点

方法1:客户端实时验证

在Customer Doctype的Client Script中添加代码:

frappe.ui.form.on('Customer', {
    territory: function(frm) {
        if (frm.doc.territory) {
            frappe.db.get_doc('Territory', frm.doc.territory).then(doc => {
                if (!doc.is_leaf) {
                    frappe.msgprint('请选择叶子节点的地区');
                    frm.set_value('territory', '');
                }
            });
        }
    }
});

方法2:服务器端验证(更严谨)

在Customer Doctype的Python Script中添加validate方法:

def validate(self):
    if self.territory:
        territory_doc = frappe.get_doc('Territory', self.territory)
        if not territory_doc.is_leaf:
            frappe.throw('请选择叶子节点的地区')

测试验证

打开Customer表单,点击Territory字段选择器即可看到树形结构的地区列表;尝试选择非叶子节点时,会触发验证提示,确保仅叶子节点可被选中并保存。

内容的提问来源于stack exchange,提问作者Paula Mansour

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 14:52:48