要在 DocType 被插入、验证(保存前)、更新、提交、取消、删除时执行代码,你必须在 DocType 的控制器模块中编写代码。
1. 控制器模块
控制器模块位于 DocType 模块的 doctype 文件夹中。例如,ToDo 的控制器位于 frappe/desk/doctype/todo/todo.py(版本 5)。创建 DocType 时会自动生成一个控制器模板,内容如下:
from future import unicode_literals
import frappe
from frappe.model.document import Document
class CustomType(Document):
pass
2. 文档属性
所有字段和子表都可以作为类的属性访问。例如,name 属性就是 self.name
3. 添加方法
在此模块中,你可以向类中添加标准方法,这些方法会在创建该类型的文档时被调用。标准处理器包括:
autoname:在命名时调用。你可以在此方法中设置self.name属性。before_insert:在文档插入前调用。validate:在文档保存前调用。如果你不希望文档被保存,可以抛出异常。on_update:在文档插入或更新到数据库后调用。on_submit:在提交后调用。on_cancel:在取消后调用。on_trash:在文档被删除后调用。