django model生成docx数据库设计文档

django项目数据库设计文档生成

直接上代码

使用说明

按照步骤 TODO1、TODO2、TODO3 之后运行文件,数据库设计文档生成在当前目录下

# Desc   : django项目生成doc文档
#  TODO 注: model的Meta属性和字段属性记得添加verbose_name属性,apps.py需要添加verbose_name

# TODO 1. 复制项目DJANGO_SETTINGS_MODULE的值
# TODO 2. 在项目settings.py中配置 PROJECT_NAME(项目名称)
# TODO 3. 需要修改此自建app的列表  model_doc_apps的值
import os
import sys
import django

sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
# TODO 1  复制项目DJANGO_SETTINGS_MODULE的值 替换 radio_station_design.settings
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "radio_station_design.settings")
django.setup()

# TODO 3 需要导出的model模块
model_doc_apps = ['usermanage', 'station', ]

from django.apps import apps
# TODO 2 导入PROJECT_NAME(自定义项目名称)
from radio_station_design.settings import PROJECT_NAME

from docx import Document
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
from docx.oxml import OxmlElement
from docx.oxml.ns import qn
from docx.shared import Inches, Pt, RGBColor
from datetime import datetime


class MyDoc:
    """生成docx文档"""

    def __init__(self, out_path, project_name='项目名称'):
        self.project_name = project_name
        self.out_path = out_path
        self._get_doc()

    def _get_doc(self):
        self.document = Document()

    def add_heading(self, head, level=1):
        """自定义的标题格式"""
        # heading = self.document.add_heading(head, level)
        if not 0 <= level <= 9:
            raise ValueError("level must be in range 0-9, got %d" % level)
        style = "Title" if level == 0 else "Heading %d" % level
        p = self.document.add_paragraph(style=style)
        space_size = 11 - level
        # 段前间距
        p.paragraph_format.space_before = Pt(space_size)
        # 段后间距
        p.paragraph_format.space_after = Pt(space_size)
        p_run = p.add_run(head)
        p_run.font.name = u"仿宋"
        if level:
            p_run.font.color.rgb = RGBColor(0, 68, 136)
        # 加粗
        p_run.bold = True
        # 字体大小
        font_size = 28 - level * 2
        p_run.font.size = Pt(font_size)
        return p

    def set_title(self):
        """设置标题以及生成日期"""
        title = self.document.add_heading(self.project_name + "数据库设计", 0)
        title.paragraph_format.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER

        p = self.document.add_paragraph()
        p.paragraph_format.alignment = WD_PARAGRAPH_ALIGNMENT.RIGHT
        # 右侧缩进
        p.paragraph_format.right_indent = Pt(4)
        pp = p.add_run("文档生成时间:" + datetime.now().strftime("%Y-%m-%d"))

        pp.font.size = Pt(16)

    def generate_doc(self):
        """生成文档固定部分"""
        # 生成doc文档
        self.set_title()
        self.add_heading('引言', level=1)
        self.add_paragraph(""
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值