前言:

Orchestra Python API (下文简称 API) 提供 update 方法更新实体,又提供 delete 方法把实体删除。

正文:

更新实体

update 方法包含 entity_type 和 data 两个参数,方法定义如下:

def update(self, entity_type, data):

entity_type 表示需要更新的实体类型,data 则是待更新的实体数据构成的列表。

以下是把 id 为 1 的 Task 实体的名称改为 New Task 的案例:

ret = client.update("Task", [{"id": 1, "name": "New Task"}])
# ret: [{"id": 1, "name": "New Task"}]

update 接口会对 data 数据做一系列验证,如果更新成功,update 方法会返回原 data 数据,失败则会抛出异常。

成功执行一次 update 调用需满足以下先决条件:

序号 条件
1 update 接口通过参数中的 entity_type 与 data 中的 id 查找实体并更新数据,data 列表中的实体数据必须包含 id。
2 需要确认 entity_type 是否存在且已启用,详情参考 create 方法。
3 需要确认 data 中的数据格式是否正确,详情参考 create 方法。
4 需要确认 data 中的字段存在且有效。
5 需要确认 data 中的字段的 read_only 属性为否或不存在,详情参考 create 方法。
6 需要确认 data 中的字段的 create_only 属性为否或不存在。
查看 create_only 属性的方式如下:

code = client.schema["Version"]["fields"]["code"]
create_only = "create_only" in code and code["create_only"]

update 方法和 create 方法类似,鼓励以批量的方式操作数据以减轻服务端压力。

默认情况下调用 update 方法会生成 事件日志(EventLogEntry)。

删除实体

delete 方法并不会从数据库中擦除数据,用户仍然可以在回收站页面恢复已删除的实体。

delete 方法包含 entity_type 和 data 两个参数,方法定义如下:

def delete(self, entity_type, data):
entity_type 表示需要更新的实体类型,data 则是待删除的实体数据构成的列表。
删除 id 为 1 的 Task 可以执行如下代码:

ret = client.delete("Task", data=[{"id": 1}])
# ret: [{"id": 1}]
delete 接口通过参数中的 entity_type 与 data 中的 id 查找实体并删除数据,data 列表中的实体数据必须包含 id。

调用 delete 方法只需确认 data 参数包含 id 数据,以及 entity_type 在图式中存在且已启用。

回收站页面也是按实体类型分类的,如图:

每个实体类型都有自己的回收页面,不要点错了哦。

默认情况下调用 delete 方法会生成 事件日志(EventLogEntry)。