当前位置: 首页 > news >正文

window系统下为django自动绘制模型类关系图

Django 提供第三方包 django-extensions,可以用来将 Django 中的 Models 生成 E-R 图。

1 安装包

pip install django-extensions

2 配置

在 Django settings.py 文件, INSTALLED_APPS 中添加 django_extensions

INSTALLED_APPS = ('django_extensions',
)

3 生成 dot 文件和 png 图片

  • 生成全部 model 的 E-R 图
python manage.py graph_models -a > all.dot
  • 单独某个 Django App (以 django_view_permission 为例) 生成 dot 文件
python manage.py graph_models django_view_permission > django_view_permission.dot

导出的 dot 内容如下:django_view_permission.dot

digraph model_graph {// Dotfile by Django-Extensions graph_models// Created: 2018-03-03 14:55// Cli Options: django_view_permissionfontname = "Helvetica"fontsize = 8splines  = truenode [fontname = "Helvetica"fontsize = 8shape = "plaintext"]edge [fontname = "Helvetica"fontsize = 8]// Labelsdjango_view_permission_models_CommonElement [label=<<TABLE BGCOLOR="palegoldenrod" BORDER="0" CELLBORDER="0" CELLSPACING="0"><TR><TD COLSPAN="2" CELLPADDING="4" ALIGN="CENTER" BGCOLOR="olivedrab4"><FONT FACE="Helvetica Bold" COLOR="white">CommonElement</FONT></TD></TR><TR><TD ALIGN="LEFT" BORDER="0"><FONT COLOR="#7B7B7B" FACE="Helvetica ">create_time</FONT></TD><TD ALIGN="LEFT"><FONT COLOR="#7B7B7B" FACE="Helvetica ">DateTimeField</FONT></TD></TR><TR><TD ALIGN="LEFT" BORDER="0"><FONT COLOR="#7B7B7B" FACE="Helvetica ">doc</FONT></TD><TD ALIGN="LEFT"><FONT COLOR="#7B7B7B" FACE="Helvetica ">TextField</FONT></TD></TR><TR><TD ALIGN="LEFT" BORDER="0"><FONT COLOR="#7B7B7B" FACE="Helvetica ">update_time</FONT></TD><TD ALIGN="LEFT"><FONT COLOR="#7B7B7B" FACE="Helvetica ">DateTimeField</FONT></TD></TR></TABLE>>]django_view_permission_models_View [label=<<TABLE BGCOLOR="palegoldenrod" BORDER="0" CELLBORDER="0" CELLSPACING="0"><TR><TD COLSPAN="2" CELLPADDING="4" ALIGN="CENTER" BGCOLOR="olivedrab4"><FONT FACE="Helvetica Bold" COLOR="white">View<BR/>&lt;<FONT FACE="Helvetica Italic">CommonElement</FONT>&gt;</FONT></TD></TR><TR><TD ALIGN="LEFT" BORDER="0"><FONT FACE="Helvetica Bold">id</FONT></TD><TD ALIGN="LEFT"><FONT FACE="Helvetica Bold">AutoField</FONT></TD></TR><TR><TD ALIGN="LEFT" BORDER="0"><FONT COLOR="#7B7B7B" FACE="Helvetica Italic">create_time</FONT></TD><TD ALIGN="LEFT"><FONT COLOR="#7B7B7B" FACE="Helvetica Italic">DateTimeField</FONT></TD></TR><TR><TD ALIGN="LEFT" BORDER="0"><FONT COLOR="#7B7B7B" FACE="Helvetica Italic">doc</FONT></TD><TD ALIGN="LEFT"><FONT COLOR="#7B7B7B" FACE="Helvetica Italic">TextField</FONT></TD></TR><TR><TD ALIGN="LEFT" BORDER="0"><FONT COLOR="#7B7B7B" FACE="Helvetica ">func</FONT></TD><TD ALIGN="LEFT"><FONT COLOR="#7B7B7B" FACE="Helvetica ">CharField</FONT></TD></TR><TR><TD ALIGN="LEFT" BORDER="0"><FONT COLOR="#7B7B7B" FACE="Helvetica ">module</FONT></TD><TD ALIGN="LEFT"><FONT COLOR="#7B7B7B" FACE="Helvetica ">CharField</FONT></TD></TR><TR><TD ALIGN="LEFT" BORDER="0"><FONT COLOR="#7B7B7B" FACE="Helvetica ">name</FONT></TD><TD ALIGN="LEFT"><FONT COLOR="#7B7B7B" FACE="Helvetica ">CharField</FONT></TD></TR><TR><TD ALIGN="LEFT" BORDER="0"><FONT COLOR="#7B7B7B" FACE="Helvetica Italic">update_time</FONT></TD><TD ALIGN="LEFT"><FONT COLOR="#7B7B7B" FACE="Helvetica Italic">DateTimeField</FONT></TD></TR></TABLE>>]django_view_permission_models_ViewSet [label=<<TABLE BGCOLOR="palegoldenrod" BORDER="0" CELLBORDER="0" CELLSPACING="0"><TR><TD COLSPAN="2" CELLPADDING="4" ALIGN="CENTER" BGCOLOR="olivedrab4"><FONT FACE="Helvetica Bold" COLOR="white">ViewSet<BR/>&lt;<FONT FACE="Helvetica Italic">CommonElement</FONT>&gt;</FONT></TD></TR><TR><TD ALIGN="LEFT" BORDER="0"><FONT FACE="Helvetica Bold">id</FONT></TD><TD ALIGN="LEFT"><FONT FACE="Helvetica Bold">AutoField</FONT></TD></TR><TR><TD ALIGN="LEFT" BORDER="0"><FONT COLOR="#7B7B7B" FACE="Helvetica Italic">create_time</FONT></TD><TD ALIGN="LEFT"><FONT COLOR="#7B7B7B" FACE="Helvetica Italic">DateTimeField</FONT></TD></TR><TR><TD ALIGN="LEFT" BORDER="0"><FONT COLOR="#7B7B7B" FACE="Helvetica Italic">doc</FONT></TD><TD ALIGN="LEFT"><FONT COLOR="#7B7B7B" FACE="Helvetica Italic">TextField</FONT></TD></TR><TR><TD ALIGN="LEFT" BORDER="0"><FONT FACE="Helvetica ">name</FONT></TD><TD ALIGN="LEFT"><FONT FACE="Helvetica ">CharField</FONT></TD></TR><TR><TD ALIGN="LEFT" BORDER="0"><FONT COLOR="#7B7B7B" FACE="Helvetica Italic">update_time</FONT></TD><TD ALIGN="LEFT"><FONT COLOR="#7B7B7B" FACE="Helvetica Italic">DateTimeField</FONT></TD></TR></TABLE>>]django_view_permission_models_ViewPermission [label=<<TABLE BGCOLOR="palegoldenrod" BORDER="0" CELLBORDER="0" CELLSPACING="0"><TR><TD COLSPAN="2" CELLPADDING="4" ALIGN="CENTER" BGCOLOR="olivedrab4"><FONT FACE="Helvetica Bold" COLOR="white">ViewPermission<BR/>&lt;<FONT FACE="Helvetica Italic">CommonElement</FONT>&gt;</FONT></TD></TR><TR><TD ALIGN="LEFT" BORDER="0"><FONT FACE="Helvetica Bold">id</FONT></TD><TD ALIGN="LEFT"><FONT FACE="Helvetica Bold">AutoField</FONT></TD></TR><TR><TD ALIGN="LEFT" BORDER="0"><FONT COLOR="#7B7B7B" FACE="Helvetica Italic">create_time</FONT></TD><TD ALIGN="LEFT"><FONT COLOR="#7B7B7B" FACE="Helvetica Italic">DateTimeField</FONT></TD></TR><TR><TD ALIGN="LEFT" BORDER="0"><FONT COLOR="#7B7B7B" FACE="Helvetica Italic">doc</FONT></TD><TD ALIGN="LEFT"><FONT COLOR="#7B7B7B" FACE="Helvetica Italic">TextField</FONT></TD></TR><TR><TD ALIGN="LEFT" BORDER="0"><FONT COLOR="#7B7B7B" FACE="Helvetica Italic">update_time</FONT></TD><TD ALIGN="LEFT"><FONT COLOR="#7B7B7B" FACE="Helvetica Italic">DateTimeField</FONT></TD></TR></TABLE>>]// Relationsdjango_view_permission_models_View -> django_view_permission_models_CommonElement[label="abstract\ninheritance"] [arrowhead=empty, arrowtail=none, dir=both];django_view_permission_models_ViewSet -> django_view_permission_models_View[label="views (viewset)"] [arrowhead=dot arrowtail=dot, dir=both];django_view_permission_models_ViewSet -> django_view_permission_models_CommonElement[label="abstract\ninheritance"] [arrowhead=empty, arrowtail=none, dir=both];account_models_BkUser [label=<<TABLE BGCOLOR="palegoldenrod" BORDER="0" CELLBORDER="0" CELLSPACING="0"><TR><TD COLSPAN="2" CELLPADDING="4" ALIGN="CENTER" BGCOLOR="olivedrab4"><FONT FACE="Helvetica Bold" COLOR="white">BkUser</FONT></TD></TR></TABLE>>]django_view_permission_models_ViewPermission -> account_models_BkUser[label="users (viewpermission)"] [arrowhead=dot arrowtail=dot, dir=both];django_view_permission_models_ViewPermission -> django_view_permission_models_View[label="views (viewpermission)"] [arrowhead=dot arrowtail=dot, dir=both];django_view_permission_models_ViewPermission -> django_view_permission_models_ViewSet[label="views_set (viewpermission)"] [arrowhead=dot arrowtail=dot, dir=both];django_view_permission_models_ViewPermission -> django_view_permission_models_CommonElement[label="abstract\ninheritance"] [arrowhead=empty, arrowtail=none, dir=both];
}

生成后的文件我没有找到在哪里,就自己建了同名的文件,输入了控制台输出的内容

如果有知道的,欢迎评论区告诉我,或者私信我,不胜感谢

  • 生成图片

由于生成的是 dot 格式的图片描述文件,需要使用工具进行转换成常用的 PNG 格式图片。可以下载 graphviz ,并将 /bin/dot.exe 加入系统 PATH 中(安装的时候有添加环境变量提示,勾选即可)。

dot -Tpng django_view_permission.dot > django_view_permission.png 

 字体默认是 Roboto,可以换成其他的字体

http://www.lryc.cn/news/371468.html

相关文章:

  • Redis的数据淘汰策略和集群部署
  • 解决CentOS 7无法识别ntfs的问题
  • 排名前五的 Android 数据恢复软件
  • Java 程序结构 -- Java 语言的变量、方法、运算符与注释
  • 淘宝/天猫商品详情优惠券获取API 接口
  • Vue前端ffmpeg压缩视频再上传(全网唯一公开真正实现)
  • 样式的双向绑定的2种方式,实现样式交互效果
  • 供应链经理面试题
  • 快速理解 Node.js 版本差异:3 分钟指南
  • 【Qt实现录频】
  • Golang编译导致的代码错觉
  • SpringBoot整合H2数据库并将其打包成jar包、转换成exe文件
  • web前端文本大小:从入门到精通的全方位解析
  • 【报文数据流中的反压处理】
  • 数据挖掘丨轻松应用RapidMiner机器学习内置数据分析案例模板详解(下篇)
  • 时代巨兽!深度神经网络如何改变我们的世界?
  • LVS+Keepalived高可用负载均衡群集
  • 【MySQL】MySQL45讲-读书笔记
  • python:faces swap
  • Android开发之音乐播放器添加排行需求
  • latex 方括号编号
  • Vue CLI 4与项目构建实战指南
  • 深入解析Web通信 HTTP、HTTPS 和 WebSocket
  • FISCO BCOS x GitLink,为国产开源技术生态注入新活力
  • Linux crontabs定时执行任务
  • QNX简述
  • [Llama3] ReAct Prompt 测试实验
  • nodejs 某音douyin网页端搜索接口及x_bogus、a_bogus(包含完整源码)(2024-06-13)
  • 继承深度剖析
  • 使用 Vue 和 Ant Design 实现抽屉效果的模块折叠功能