# 控制器方法
控制器方法允许您在文档的生命周期中编写业务逻辑。
让我们创建我们的第二个DocType:图书馆成员。它将包含以下字段:
名(数据,必填)
姓(数据)
全名(数据,只读)
电子邮件地址(数据)
电话(数据)

创建好DocType后,转到图书馆成员列表,从设置 > 重新加载清除缓存,并创建一个新的图书馆成员。
如果您注意到,表单中没有显示全名字段。这是因为我们将其设置为只读。只有在它有一些值时才会显示。
让我们在我们的Python控制器类中编写代码,以便全名自动从名和姓计算得出。
打开您的代码编辑器,打开文件library_member.py并进行以下更改:
library_member.py
class LibraryMember(Document):
# 此方法将在每次保存文档时运行
def before_save(self):
self.full_name = f'{self.first_name} {self.last_name or ""}'
1
2
3
4
2
3
4
注意
如果上述代码片段对您不起作用,请确保启用了服务器端脚本,然后重新启动bench
bench set-config -g server_script_enabled true
1
我们在before_save方法中编写了逻辑,该方法在每次保存文档时运行。这是Document类提供的众多钩子之一。您可以在控制器文档中了解更多关于所有可用钩子的信息。
现在,回去再创建一个图书馆成员,并在保存后看到全名显示。
接下来: DocType类型.md
← DocType特性 DocType的类型 →