用途:在 Frappe Framework 中创建与修改 DocType(核心数据模型抽象),适用于新建标准、单条、子表、可提交、树形等 DocType,添加或修改字段,实现控制器逻辑,设置命名序列与自动命名,配置权限与工作流,以及构建父子表关系。
主要能力:支持多种 DocType 类型(标准、Single、Child Table、Submittable、Tree、Virtual);定义字段(如 Link 类型,含 fieldname、fieldtype、label、options、reqd);编写控制器钩子(validate、before_save、after_insert 等);配置命名(autoname 支持 field:fieldname、naming_series:、hash、format:PREFIX-{####});设置角色权限与用户权限;创建 Workflow 关联状态与转换。
使用方式:先确认环境,执行 bench --site <site> console 并检查 frappe.conf.developer_mode 为 True。可通过 UI(DocType List → New)或代码方式创建,代码方式在 <app>/<module>/doctype/<doctype_name>/ 下放置同名 .json 与 .py 文件。控制器类名需为 DocType 名称的 PascalCase。修改后运行 bench --site <site> migrate 应用架构变更。
适用场景:构建数据模型、添加字段、实现业务校验与副作用、配置权限与工作流、设计父子表结构。
限制与注意:DocType 修改仅在 developer_mode = 1 时导出到文件;命名序列前缀需避免冲突;子表需单独测试;fieldname 使用 snake_case、不超过 140 字符且避开 SQL 保留字;必填字段需设 reqd: 1;字段类型需与数据匹配;避免循环 Link 依赖;关键字段需设 in_list_view: 1。复杂权限、子表模式与 Virtual DocType 可参考对应 references 文档。