agentic_huge_data_base / wiki
页面 Mayan EDMS · 7.2 数据模型参考·DeepWiki 中文全文译文

7.2 · 数据模型参考(Data Model Reference)

企业电子文档治理 · 本章是 Mayan EDMS DeepWiki 中文译文的独立章节页,保留原始链接、源码锚点、模块标签和章节层级。

项目Mayan EDMS 章节7.2 状态全文译文 模块文档对象与元数据、测试、发布与运维、检索、召回与索引、界面与交互
源码线索
  • mayan/apps/cabinets/tests/test_wizard_steps.py
  • mayan/apps/cabinets/wizard_steps.py
  • mayan/apps/converter/templatetags/converter_tags.py
  • mayan/apps/documents/apps.py
  • mayan/apps/documents/icons.py
  • mayan/apps/documents/links/document_version_links.py
  • mayan/apps/documents/managers.py
  • mayan/apps/documents/migrations/0078_alter_documenttype_label.py
  • mayan/apps/documents/models/document_file_models.py
  • mayan/apps/documents/models/document_file_page_models.py
模块标签
  • 文档对象与元数据
  • 测试、发布与运维
  • 检索、召回与索引
  • 界面与交互
  • 入库与解析

中文译文

数据模型参考(中文译文)

原始 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.py
  • mayan/apps/cabinets/wizard_steps.py
  • mayan/apps/converter/templatetags/converter_tags.py
  • mayan/apps/documents/apps.py
  • mayan/apps/documents/icons.py
  • mayan/apps/documents/links/document_version_links.py
  • mayan/apps/documents/managers.py
  • mayan/apps/documents/migrations/0078_alter_documenttype_label.py
  • mayan/apps/documents/models/document_file_models.py
  • mayan/apps/documents/models/document_file_page_models.py
  • mayan/apps/documents/models/document_models.py
  • mayan/apps/documents/models/document_type_models.py
  • mayan/apps/documents/models/document_version_models.py
  • mayan/apps/documents/models/document_version_page_models.py
  • mayan/apps/documents/permissions.py
  • mayan/apps/documents/tasks.py
  • mayan/apps/documents/templates/documents/errors/document_file_page_transformation_error.html
  • mayan/apps/documents/templates/documents/errors/document_version_page_transformation_error.html
  • mayan/apps/documents/templates/documents/forms/widgets/page_carousel.html
  • mayan/apps/documents/templates/documents/forms/widgets/page_image.html
  • mayan/apps/documents/templates/documents/widgets/thumbnail.html
  • mayan/apps/documents/tests/test_document_file_page_views.py
  • mayan/apps/documents/tests/test_document_type_api.py
  • mayan/apps/documents/urls.py
  • mayan/apps/documents/views/document_file_page_views.py
  • mayan/apps/documents/views/document_type_views.py
  • mayan/apps/documents/views/document_version_page_views.py
  • mayan/apps/documents/views/document_version_views.py
  • mayan/apps/documents/views/document_views.py
  • mayan/apps/metadata/api.py
  • mayan/apps/metadata/api_views.py
  • mayan/apps/metadata/forms.py
  • mayan/apps/metadata/models.py
  • mayan/apps/metadata/serializers.py
  • mayan/apps/metadata/tests/literals.py
  • mayan/apps/metadata/tests/mixins.py
  • mayan/apps/metadata/tests/test_forms.py
  • mayan/apps/metadata/tests/test_models.py
  • mayan/apps/metadata/tests/test_wizard_steps.py
  • mayan/apps/metadata/urls.py
  • mayan/apps/metadata/wizard_steps.py
  • mayan/apps/quotas/tests/test_hooks.py
  • mayan/apps/sources/wizards.py
  • mayan/apps/tags/tests/literals.py
  • mayan/apps/tags/tests/test_document_tag_api.py
  • mayan/apps/tags/tests/test_indexing.py
  • mayan/apps/tags/tests/test_tag_api.py
  • mayan/apps/tags/tests/test_tag_document_api.py
  • mayan/apps/tags/tests/test_wizard_steps.py
  • mayan/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-344mayan/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-551mayan/apps/metadata/models.py:27-329