前言:
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)。