数据模型参考(中文译文)
原始 DeepWiki 页面:https://deepwiki.com/mayan-edms/Mayan-EDMS/7.2-data-model-reference
翻译时间:2026-05-27T08:44:29.404Z
翻译模型:deepseek-chat
原文字符数:15309
项目:Mayan EDMS (mayan-edms)
---
数据模型参考
相关源文件
以下文件被用作生成此维基页面的上下文:
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 模型是系统中代表文档的中心实体。它作为根对象,将所有与文档相关的信息联系在一起。
erDiagram
Document {
uuid UUID PK
label CharField
description TextField
datetime_created DateTimeField
language CharField
in_trash BooleanField
trashed_date_time DateTimeField
is_stub BooleanField
document_type_id FK
}
DocumentType {
id AutoField PK
label CharField
trash_time_period PositiveIntegerField
trash_time_unit CharField
delete_time_period PositiveIntegerField
delete_time_unit CharField
filename_generator_backend CharField
filename_generator_backend_arguments TextField
}
Document ||--|| DocumentType : "属于"
关键字段和属性:
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 模型表示与文档关联的实际文件上传。一个文档可以有多个文件,代表不同的版本或格式。
classDiagram
class DocumentFile {
+document FK
+timestamp DateTimeField
+comment TextField
+file FileField
+filename CharField
+mimetype CharField
+encoding CharField
+checksum CharField
+size PositiveIntegerField
+checksum_update()
+open()
+exists()
+get_intermediate_file()
}
class DocumentVersion {
+document FK
+timestamp DateTimeField
+comment TextField
+active BooleanField
+active_set()
+export()
+pages_remap()
+pages_reset()
}
DocumentFile --> Document : "属于"
DocumentVersion --> Document : "属于"
关键方法:
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)
这些模型分别表示文件和版本中的单个页面。
erDiagram
DocumentFilePage {
id AutoField PK
document_file_id FK
page_number PositiveIntegerField
}
DocumentVersionPage {
id AutoField PK
document_version_id FK
page_number PositiveIntegerField
content_type_id FK
object_id PositiveIntegerField
}
DocumentFile ||--o{ DocumentFilePage : "包含"
DocumentVersion ||--o{ DocumentVersionPage : "包含"
DocumentVersionPage }o--|| ContentType : "指向"
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
元数据模型
元数据系统允许通过灵活的类型-值系统将结构化数据附加到文档上。
核心元数据模型
erDiagram
MetadataType {
id AutoField PK
name CharField
label CharField
default CharField
lookup TextField
validation CharField
validation_arguments TextField
parser CharField
parser_arguments TextField
}
DocumentMetadata {
id AutoField PK
document_id FK
metadata_type_id FK
value CharField
}
DocumentTypeMetadataType {
id AutoField PK
document_type_id FK
metadata_type_id FK
required BooleanField
}
Document ||--o{ DocumentMetadata : "拥有元数据"
MetadataType ||--o{ DocumentMetadata : "定义类型"
DocumentType ||--o{ DocumentTypeMetadataType : "支持类型"
MetadataType ||--o{ DocumentTypeMetadataType : "被类型使用"
元数据类型模型(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 使用自定义管理器为不同用例提供过滤后的查询集:
文档管理器
classDiagram
class DocumentManager {
+delete_stubs()
+get_by_natural_key()
}
class ValidDocumentManager {
+get_queryset() "in_trash=False"
}
class TrashCanManager {
+get_queryset() "in_trash=True"
}
Document --> DocumentManager : "objects"
Document --> ValidDocumentManager : "valid"
Document --> TrashCanManager : "trash"
专用管理器
ValidDocumentFileManager:过滤来自非回收站文档的文件ValidDocumentVersionManager:过滤来自非回收站文档的版本ValidFavoriteDocumentManager:管理用户收藏的文档ValidRecentlyAccessedDocumentManager:跟踪最近访问的文档
来源:mayan/apps/documents/managers.py:20-322
辅助模型
用户活动模型
classDiagram
class FavoriteDocument {
+user FK
+document FK
+datetime_added DateTimeField
}
class RecentlyAccessedDocument {
+user FK
+document FK
+datetime_accessed DateTimeField
}
FavoriteDocument --> User : "属于"
FavoriteDocument --> Document : "引用"
RecentlyAccessedDocument --> User : "属于"
RecentlyAccessedDocument --> Document : "引用"
这些模型跟踪用户与文档的交互,用于收藏列表和最近访问文档等功能。
来源:mayan/apps/documents/apps.py:236-251
模型关系总览
graph TD
DocumentType["DocumentType<br/>📋 文档分类"]
Document["Document<br/>📄 核心文档实体"]
DocumentFile["DocumentFile<br/>💾 物理文件存储"]
DocumentVersion["DocumentVersion<br/>🔄 逻辑文档视图"]
DocumentFilePage["DocumentFilePage<br/>📃 文件页面"]
DocumentVersionPage["DocumentVersionPage<br/>📑 版本页面"]
MetadataType["MetadataType<br/>🏷️ 元数据定义"]
DocumentMetadata["DocumentMetadata<br/>📊 文档元数据"]
DocumentType ||--o{ Document : "分类"
Document ||--o{ DocumentFile : "包含"
Document ||--o{ DocumentVersion : "拥有版本"
DocumentFile ||--o{ DocumentFilePage : "包含页面"
DocumentVersion ||--o{ DocumentVersionPage : "包含页面"
DocumentVersionPage -.->|"GenericFK"| DocumentFilePage : "指向"
MetadataType ||--o{ DocumentMetadata : "定义"
Document ||--o{ DocumentMetadata : "拥有元数据"
classDef core fill:#e1f5fe
classDef metadata fill:#f3e5f5
classDef file fill:#e8f5e8
class DocumentType,Document core
class MetadataType,DocumentMetadata metadata
class DocumentFile,DocumentVersion,DocumentFilePage,DocumentVersionPage file
此图展示了文档管理系统中所有主要模型之间的完整关系结构。
来源:mayan/apps/documents/apps.py:221-551,mayan/apps/metadata/models.py:27-329