utils.models.descriptor module

接口描述符

本模块实现模型接口描述符,用于标记模型属性、方法的性质,并提供处理方法。

Note: - 私密性顺序:公开(前端可用) > 前端不可用 > 仅管理员可用(后端相同) > 仅用于调试(命令行) - 接口除字符串方法外均默认公开,即前端可用,后端可用,但可以通过标记接口为私有。 - 字符串方法应为管理员可用

utils.models.descriptor.admin_only(method: T) T[源代码]

仅管理员用户可用,如后台、管理员操作的其他页面等,必须对用户不可见

utils.models.descriptor.debug_only(method: T) T[源代码]

仅用于提供调试信息,如报错、后台、日志记录等,必须对用户不可见

utils.models.descriptor.export_to_frontend(instance: Model | Any, *, keep_fields: bool = False, recursive: bool = False) object[源代码]

将模型实例导出为前端可用的数据结构,仅保留前端允许使用的接口

Args: - instance: 模型实例

Keyword Args: - keep_fields: 是否默认保留字段数据,若为True,则默认保留,否则仅保留方法和属性 - recursive: 是否递归导出,若为True,则关联字段也会被导出,否则仅保留原始模型实例

Returns: - frontend_data: 前端可用的数据结构,移除被标记应替代或删除的字段,后端请勿使用

Warning: - 会访问模型实例的所有属性,关联字段因此会被查询,可能导致性能问题 - 仅支持导出模型实例,不支持导出QuerySet

utils.models.descriptor.invalid_for_frontend(method: T) T[源代码]

前端不能使用这个方法

utils.models.descriptor.necessary_for_frontend(*fields: str | Field) Callable[[T], T][源代码]
utils.models.descriptor.necessary_for_frontend(method: T) T

前端必须使用此方法代替直接访问相关属性,如限制choice的属性,可以在参数中标记相关字段