on_apply 事件

当在 客户端服务端 调用项目的 apply 方法时, 服务器应用程序默认会根据对数据集所做的更改生成 SQL 查询语句并执行。

可以通过在实体项的服务端模块中编写 on_apply 事件处理程序来更改此行为。

有时需要在保存更改时为所有实体项执行一些代码。 在这种情况下,可以使用任务的 on_apply 事件处理程序(在任务服务端模块中声明)。

以下代码描述了如何处理这些事件:

#...
result = None
if self.task.on_apply:
    result = self.task.on_apply(self, delta, params, connection)
if result is None and self.on_apply:
    result = self.on_apply(self, delta, params, connection)
if result is None:
    result = self.apply_delta(delta, params, connection)
#...
return result

它会检查任务是否有 on_apply 事件处理程序。 如果在任务服务器模块中声明了 on_apply 事件处理程序,那么它会被执行。

如果任务的 on_apply 事件处理程序未声明或事件处理程序的结果返回 None,该方法会检查实体项是否有 on_apply 事件处理程序。如果在实体项服务端模块中声明了,则它会被执行。

如果实体项事件处理程序返回的结果是 None ,则调用实体项的 apply_delta 方法,该方法会生成 SQL 查询,并在执行后返回查询结果。

示例

这是一个如何使用 on_apply 的示例