数据模型参考
数据模型参考
相关源文件
本章引用的主要源码文件:
mayan/apps/cabinets/tests/test_wizard_steps.pymayan/apps/cabinets/wizard_steps.pymayan/apps/converter/templatetags/converter_tags.pymayan/apps/documents/apps.pymayan/apps/documents/icons.pymayan/apps/documents/links/document_version_links.pymayan/apps/documents/managers.pymayan/apps/documents/migrations/0078_alter_documenttype_label.pymayan/apps/documents/models/document_file_models.pymayan/apps/documents/models/document_file_page_models.pymayan/apps/documents/models/document_models.pymayan/apps/documents/models/document_type_models.pymayan/apps/documents/models/document_version_models.pymayan/apps/documents/models/document_version_page_models.pymayan/apps/documents/permissions.pymayan/apps/documents/tasks.pymayan/apps/documents/templates/documents/errors/document_file_page_transformation_error.htmlmayan/apps/documents/templates/documents/errors/document_version_page_transformation_error.htmlmayan/apps/documents/templates/documents/forms/widgets/page_carousel.htmlmayan/apps/documents/templates/documents/forms/widgets/page_image.htmlmayan/apps/documents/templates/documents/widgets/thumbnail.htmlmayan/apps/documents/tests/test_document_file_page_views.pymayan/apps/documents/tests/test_document_type_api.pymayan/apps/documents/urls.pymayan/apps/documents/views/document_file_page_views.pymayan/apps/documents/views/document_type_views.pymayan/apps/documents/views/document_version_page_views.pymayan/apps/documents/views/document_version_views.pymayan/apps/documents/views/document_views.pymayan/apps/metadata/api.pymayan/apps/metadata/api_views.pymayan/apps/metadata/forms.pymayan/apps/metadata/models.pymayan/apps/metadata/serializers.pymayan/apps/metadata/tests/literals.pymayan/apps/metadata/tests/mixins.pymayan/apps/metadata/tests/test_forms.pymayan/apps/metadata/tests/test_models.pymayan/apps/metadata/tests/test_wizard_steps.pymayan/apps/metadata/urls.pymayan/apps/metadata/wizard_steps.pymayan/apps/quotas/tests/test_hooks.pymayan/apps/sources/wizards.pymayan/apps/tags/tests/literals.pymayan/apps/tags/tests/test_document_tag_api.pymayan/apps/tags/tests/test_indexing.pymayan/apps/tags/tests/test_tag_api.pymayan/apps/tags/tests/test_tag_document_api.pymayan/apps/tags/tests/test_wizard_steps.pymayan/apps/tags/wizard_steps.py
本文档提供了 Mayan EDMS 中所有 Django 模型的完整参考,包括其字段、关系和关键方法。它涵盖了构成文档管理系统基础的核心文档管理模型、元数据系统模型以及辅助模型。
有关 API 端点和序列化器的信息,请参阅 API 参考。有关配置设置,请参阅 配置参考。
核心文档模型
文档管理系统围绕几个核心模型构建,这些模型代表文档、文档类型、文件、版本和页面。这些模型形成一个层级结构,其中文档包含文件和版本,而文件和版本又包含页面。
文档模型(文档模型)
Document 模型是系统中代表文档的中心实体。它作为根对象,将所有与文档相关的信息联系在一起。
关键字段和属性:
uuid:文档的通用唯一标识符label:文档的人类可读名称document_type:指向DocumentType的外键关系is_stub:指示文档是否已上传文件in_trash:表示回收站状态的布尔标志
来源:mayan/apps/documents/models/document_models.py:41-325
文档类型模型(文档类型模型)
DocumentType 模型定义了文档的类别及其行为,包括保留策略和文件名生成。
关键字段:
label:文档类型的唯一标识符trash_time_period/trash_time_unit:自动移入回收站的配置delete_time_period/delete_time_unit:自动删除的配置filename_generator_backend:负责生成文件名的类
来源:mayan/apps/documents/models/document_type_models.py:34-186
文档文件和版本模型
文档文件模型(DocumentFile 模型)
DocumentFile 模型表示与文档关联的实际文件上传。一个文档可以有多个文件,代表不同的版本或格式。
关键方法:
checksum_update():计算并更新文件校验和open():返回带有钩子支持的文件描述符exists():检查文件是否存在于存储中
来源:mayan/apps/documents/models/document_file_models.py:51-498
文档版本模型(DocumentVersion 模型)
DocumentVersion 模型表示文档的逻辑版本,允许对文档页面进行多种视图或排列。
关键字段:
active:布尔值,指示这是否为活动版本comment:版本的描述
关键方法:
active_set():将此版本设置为活动版本pages_remap():将页面重新映射到不同的内容对象export():将版本导出为 PDF 格式
来源:mayan/apps/documents/models/document_version_models.py:45-389
页面模型
文档文件页面(DocumentFilePage)和文档版本页面(DocumentVersionPage)
这些模型分别表示文件和版本中的单个页面。
DocumentVersionPage 使用 Django 的 GenericForeignKey 指向任何内容对象,通常指向 DocumentFilePage 实例。
来源:mayan/apps/documents/models/document_file_page_models.py:28-344,mayan/apps/documents/models/document_version_page_models.py:39-545
元数据模型
元数据系统允许通过灵活的类型-值系统将结构化数据附加到文档上。
核心元数据模型
元数据类型模型(MetadataType 模型)
定义可以附加到文档的元数据类型:
name:元数据类型的内部标识符label:人类可读的名称default:默认值的模板lookup:生成选择列表的模板validation/validation_arguments:校验类和参数parser/parser_arguments:解析器类和参数
关键方法:
get_default_value():渲染默认值模板get_lookup_values():从模板生成选择列表validate_value():校验元数据值
来源:mayan/apps/metadata/models.py:27-186
文档元数据模型(DocumentMetadata 模型)
将元数据值链接到特定文档:
document:指向 Document 的外键metadata_type:指向 MetadataType 的外键value:实际的元数据值
该模型通过 clean_fields() 强制进行校验,并确保元数据类型对文档类型有效。
来源:mayan/apps/metadata/models.py:188-277
模型管理器和查询集
Mayan EDMS 使用自定义管理器为不同用例提供过滤后的查询集:
文档管理器
专用管理器
ValidDocumentFileManager:过滤来自非回收站文档的文件ValidDocumentVersionManager:过滤来自非回收站文档的版本ValidFavoriteDocumentManager:管理用户收藏的文档ValidRecentlyAccessedDocumentManager:跟踪最近访问的文档
来源:mayan/apps/documents/managers.py:20-322
辅助模型
用户活动模型
这些模型跟踪用户与文档的交互,用于收藏列表和最近访问文档等功能。
来源:mayan/apps/documents/apps.py:236-251
模型关系总览
此图展示了文档管理系统中所有主要模型之间的完整关系结构。
来源:mayan/apps/documents/apps.py:221-551,mayan/apps/metadata/models.py:27-329