当前位置: 首页 > 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,可以换成其他的字体

相关文章:

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

Django 提供第三方包 django-extensions&#xff0c;可以用来将 Django 中的 Models 生成 E-R 图。 1 安装包 pip install django-extensions 2 配置 在 Django settings.py 文件&#xff0c; INSTALLED_APPS 中添加 django_extensions INSTALLED_APPS (django_extension…...

Redis的数据淘汰策略和集群部署

05- Redis的数据淘汰策略有哪些 ? Redis 提供 8 种数据淘汰策略&#xff1a; 淘汰易失数据(具有过期时间的数据) volatile-lru&#xff08;least recently used&#xff09;&#xff1a;从已设置过期时间的数据集&#xff08;server.db[i].expires&#xff09;中挑选最近最少…...

解决CentOS 7无法识别ntfs的问题

解决CentOS 7无法识别ntfs的问题 方式一&#xff1a; Centos默认不支持ntfs文件格式&#xff0c;直接在Centos7上插U盘或移动硬盘无法识别&#xff0c;安装 ntfs-3g即可&#xff1a; # yum install epel-release -y # yum install ntfs-3g -y[rootbogon ~]# rpm -qa | grep nt…...

排名前五的 Android 数据恢复软件

正在寻找数据恢复软件来从 Android 设备恢复数据&#xff1f;本指南将为您提供 5 款最佳 Android 数据恢复软件。浏览这些软件&#xff0c;然后选择您喜欢的一款来恢复 Android 数据。 ndroid 设备上的数据丢失可能是一种令人沮丧的经历&#xff0c;无论是由于意外删除、系统崩…...

Java 程序结构 -- Java 语言的变量、方法、运算符与注释

大家好&#xff0c;我是栗筝i&#xff0c;这篇文章是我的 “栗筝i 的 Java 技术栈” 专栏的第 003 篇文章&#xff0c;在 “栗筝i 的 Java 技术栈” 这个专栏中我会持续为大家更新 Java 技术相关全套技术栈内容。专栏的主要目标是已经有一定 Java 开发经验&#xff0c;并希望进…...

淘宝/天猫商品详情优惠券获取API 接口

天猫商品优惠券数据API接口是一种用于获取天猫商品优惠券信息的接口。通过该接口&#xff0c;商家或开发者可以获取到商品的优惠券信息&#xff0c;包括优惠券的名称、金额、使用条件等。 该接口的主要参数包括商品ID、优惠券ID等&#xff0c;通过传入这些参数&#xff0c;可以…...

Vue前端ffmpeg压缩视频再上传(全网唯一公开真正实现)

1.Vue项目中安装插件ffmpeg 1.1 插件版本依赖配置 两个插件的版本 "ffmpeg/core": "^0.10.0", "ffmpeg/ffmpeg": "^0.10.1"package.json 和 package-lock.json 都加入如下ffmpeg的版本配置&#xff1a; 1.2 把ffmpeg安装到项目依…...

样式的双向绑定的2种方式,实现样式交互效果

与样式标签实现双向绑定 通过布尔值来决定样式是出现还是消失 show代表着布尔值&#xff0c;show的初始值是false所以文本不会有高亮的效果&#xff0c;当用户点击了按钮&#xff0c;就会调用shows这个函数&#xff0c;并将show的相反值true赋值并覆盖给show,此时show的值为tru…...

供应链经理面试题

供应链经理面试题通常会涉及对供应链管理的基本理解、工作经验、解决问题的能力以及团队协作等多个方面。 请简要介绍一下你在供应链管理领域的工作经验和取得的成绩。你如何定义供应链管理&#xff1f;它在企业中的作用是什么&#xff1f;你认为供应链经理最重要的职责是什么…...

快速理解 Node.js 版本差异:3 分钟指南

Node.js 是一个广泛使用的 JavaScript 运行时环境&#xff0c;允许开发者在服务器端运行 JavaScript 代码。随着技术的发展&#xff0c;Node.js 不断推出新版本&#xff0c;引入新特性和改进。了解不同版本之间的差异对于开发者来说至关重要。以下是一个快速指南&#xff0c;帮…...

【Qt实现录频】

在Qt中实现录制视频可以通过使用Qt Multimedia模块来实现。你可以使用QCamera类来访问摄像头并捕获视频数据。以下是一个简单的示例代码,用于在Qt中实现录制视频: #include <QCamera> #include <QCameraInfo> #include <QCameraViewfinder> #include <…...

Golang编译导致的代码错觉

文章目录 背景分析代码疑问 直接上汇编gdb调试优化后的汇编staticunit64s查看禁止优化后的汇编 查看编译过程的SSA生成SSAb对应的SSAc对应的SSAgo官方文档的解释 对比C语言的表现总结 背景 网上看到一段代码&#xff0c;来源是Golang 编译器优化那些事&#xff0c;百思不得其解…...

SpringBoot整合H2数据库并将其打包成jar包、转换成exe文件

SpringBoot整合H2数据库并将其打包成jar包、转换成exe文件 H2 是一个用 Java 开发的嵌入式数据库&#xff0c;它的主要特性使其成为嵌入式应用程序的理想选择。H2 仅是一个类库&#xff0c;可以直接嵌入到应用项目中&#xff0c;而无需独立安装客户端和服务器端。 常用开源数…...

web前端文本大小:从入门到精通的全方位解析

web前端文本大小&#xff1a;从入门到精通的全方位解析 在web前端开发的世界中&#xff0c;文本大小的处理既是基础也是关键的一环。无论是对于初学者还是资深开发者&#xff0c;正确且有效地处理文本大小都显得尤为重要。本文将从四个方面、五个方面、六个方面和七个方面&…...

【报文数据流中的反压处理】

报文数据流中的反压处理 1 带存储体的反压1.1 原理图1.2 Demo 尤其是在NP芯片中&#xff0c;经常涉及到报文的数据流处理&#xff1b;为了防止数据丢失&#xff0c;和各模块的流水处理&#xff1b;因此需要到反压机制&#xff1b; 反压机制目前接触到的有两种&#xff1a;一是基…...

数据挖掘丨轻松应用RapidMiner机器学习内置数据分析案例模板详解(下篇)

RapidMiner 案例模板 RapidMiner 机器学习平台提供了一个可视化的操作界面&#xff0c;允许用户通过拖放的方式构建数据分析流程。RapidMiner目前内置了 13 种案例模板&#xff0c;这些模板是预定义的数据分析流程&#xff0c;可以帮助用户快速启动和执行常见的数据分析任务。 …...

时代巨兽!深度神经网络如何改变我们的世界?

深度神经网络 1、 简介1.1 定义深度神经网络1.2 深度学习的发展历程1.3 深度神经网络的应用领域 2、深度神经网络的基本原理2.1 神经元层2.1.1 神经元2.1.2 神经元层 2.2 前向传播2.3 反向传播2.4 激活函数2.4.1、作用2.4.2、常见激活函数2.4.3、选择激活函数的考虑 2.5 损失函…...

LVS+Keepalived高可用负载均衡群集

目录 一.高可用群集相关概述 1.高可用&#xff08;HA&#xff09;群集与普通群集的比较 普通群集 高可用群集&#xff08;HA&#xff09; 两者比较 2.Keepalived高可用方案 3.Keepalived的体系模块及其作用 4.Keepalived实现原理 二.LVSKeepAlived高可用负载均衡集群的…...

【MySQL】MySQL45讲-读书笔记

1、基础架构&#xff1a;一条SQL查询语句是如何执行的&#xff1f; 1.1 连接器 连接器负责跟客户端建立连接、获取权限、维持和管理连接。 mysql -h$ip -P$port -u$user -p输完命令之后&#xff0c;输入密码。 1.2 查询缓存 MySQL 拿到一个查询请求后&#xff0c;会先到查询缓…...

python:faces swap

# encoding: utf-8 # 版权所有 2024 ©涂聚文有限公司 # 许可信息查看&#xff1a; 两个头像图片之间换脸 # 描述&#xff1a; https://stackoverflow.com/questions/902761/saving-a-numpy-array-as-an-image?answertabvotes # Author : geovindu,Geovin Du 涂聚文. #…...

<6>-MySQL表的增删查改

目录 一&#xff0c;create&#xff08;创建表&#xff09; 二&#xff0c;retrieve&#xff08;查询表&#xff09; 1&#xff0c;select列 2&#xff0c;where条件 三&#xff0c;update&#xff08;更新表&#xff09; 四&#xff0c;delete&#xff08;删除表&#xf…...

QMC5883L的驱动

简介 本篇文章的代码已经上传到了github上面&#xff0c;开源代码 作为一个电子罗盘模块&#xff0c;我们可以通过I2C从中获取偏航角yaw&#xff0c;相对于六轴陀螺仪的yaw&#xff0c;qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别

UnsatisfiedLinkError 在对接硬件设备中&#xff0c;我们会遇到使用 java 调用 dll文件 的情况&#xff0c;此时大概率出现UnsatisfiedLinkError链接错误&#xff0c;原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用&#xff0c;结果 dll 未实现 JNI 协…...

AI编程--插件对比分析:CodeRider、GitHub Copilot及其他

AI编程插件对比分析&#xff1a;CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展&#xff0c;AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者&#xff0c;分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...

安卓基础(aar)

重新设置java21的环境&#xff0c;临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的&#xff1a; MyApp/ ├── app/ …...

Bean 作用域有哪些?如何答出技术深度?

导语&#xff1a; Spring 面试绕不开 Bean 的作用域问题&#xff0c;这是面试官考察候选人对 Spring 框架理解深度的常见方式。本文将围绕“Spring 中的 Bean 作用域”展开&#xff0c;结合典型面试题及实战场景&#xff0c;帮你厘清重点&#xff0c;打破模板式回答&#xff0c…...

掌握 HTTP 请求:理解 cURL GET 语法

cURL 是一个强大的命令行工具&#xff0c;用于发送 HTTP 请求和与 Web 服务器交互。在 Web 开发和测试中&#xff0c;cURL 经常用于发送 GET 请求来获取服务器资源。本文将详细介绍 cURL GET 请求的语法和使用方法。 一、cURL 基本概念 cURL 是 "Client URL" 的缩写…...

虚幻基础:角色旋转

能帮到你的话&#xff0c;就给个赞吧 &#x1f618; 文章目录 移动组件使用控制器所需旋转&#xff1a;组件 使用 控制器旋转将旋转朝向运动&#xff1a;组件 使用 移动方向旋转 控制器旋转和移动旋转 缺点移动旋转&#xff1a;必须移动才能旋转&#xff0c;不移动不旋转控制器…...

k8s从入门到放弃之Pod的容器探针检测

k8s从入门到放弃之Pod的容器探针检测 在Kubernetes&#xff08;简称K8s&#xff09;中&#xff0c;容器探测是指kubelet对容器执行定期诊断的过程&#xff0c;以确保容器中的应用程序处于预期的状态。这些探测是保障应用健康和高可用性的重要机制。Kubernetes提供了两种种类型…...

数据源指的是哪里的数据,磁盘中还是内存中

在 MyDB 项目中&#xff0c;特别是这段缓存框架代码&#xff1a; T obj getForCache(key);以及它的上下文&#xff1a; AbstractCache 是一个抽象类&#xff0c;内部有两个抽象方法&#xff0c;留给实现类去实现具体的操作&#xff1a; protected abstract T getForCache(lon…...