用途:为 Frappe/ERPNext 自定义应用提供 hooks.py 的确定性语法参考,用于扩展框架功能,例如响应文档事件、注册定时任务、向客户端注入数据、覆盖控制器与接口、定制权限、导出配置及安装迁移钩子。
主要能力:doc_events 可按 DocType 或通配符 "*" 绑定 validate、on_update、after_insert、on_submit、on_cancel、on_trash 等生命周期事件;scheduler_events 支持 hourly、daily、weekly、monthly、hourly_long、daily_long 与 cron 表达式;extend_bootinfo 向 frappe.boot 注入公开配置;override_doctype_class、override_whitelisted_methods、permission_query_conditions、has_permission、fixtures、app_include_js/css、web_include_js/css、doctype_js、after_install、after_migrate 等配置项均有示例。
使用方式:在 hooks.py 中声明配置,处理函数放在应用模块内,函数签名需符合约定(如 doc_events 处理函数接收 doc 与 method,定时任务不接收参数)。修改 scheduler_events 后必须执行 bench --site sitename migrate;导出 fixtures 使用 bench --site sitename export-fixtures。
限制与注意:doc_events 中不要调用 frappe.db.commit();on_update 后修改字段应使用 frappe.db.set_value;耗时任务放入 _long 队列;bootinfo 不放敏感数据;覆盖控制器须先调用 super();permission_query_conditions 仅对 get_list 生效,不适用于 get_all;多个应用覆盖同一 DocType 时最后安装者生效;extend_doctype_class 仅 Frappe v16+ 可用。资料未提供收费、价格与平台信息。