django:自动绘制模型类关系图

网上很多关于django生成模型类关系图的文章,基本采用graphviz+pygraphviz/pydot的形式直接输出图片,而这两种结合也可以绘制更多的关系图,例如sklearn的决策树模型。要绘制模型类需要用到第三方应用,我们先来倒着说。

一、django_extensions

在Django中我们需要安装第三方应用django_extensions

pip install django_extensions

安装完成后,需要在django中注册

INSTALLED_APPS = [
    ...
    'aaa.apps.AaaConfig',
    'django_extensions',
]
# 此处注意模板类型应为原始模板
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        ...
    },
]

使用以下命令,进行图形绘制

# 绘制所有的模型类
python manage.py graph_models -a -o models.png
# 指定工具
python manage.py graph_models --pygraphviz -a -o models.png
python manage.py graph_models --pydot -a -o models.png
# 绘制指定app的模型类
python manage.py graph_models aaa -o aaa_models.png
# 输出为dot文件
python manage.py graph_models -a -o models.dot
# 使用dot命令进行转化
dot -Tpng models.dot > models.png

将模型类绘制成关系图,拿到新项目的时候,快速分析就方便多了
在这里插入图片描述

二、graphviz+pygraphviz/pydot

Linux

Linux下的安装很简单

sudo apt-get install graphviz
# 这个是pygraphviz的依赖,必须安装
sudo apt-get install graphviz libgraphviz-dev pkg-config
pip install pygraphviz
pip install pydot

python3.5环境亲测可以使用,以下为示例

import pygraphviz as pgv

A=pgv.AGraph(directed=True,strict=True)
A.add_edge(1,2)
A.add_edge(1,3)
A.add_edge(2,4)
A.add_edge(2,5)
A.add_edge(5,6)
A.add_edge(5,7)
A.add_edge(3,8)
A.add_edge(3,9)
A.add_edge(8,10)
A.add_edge(8,11)
A.graph_attr['epsilon']='0.001'
print(A.string()) # print dot file to standard output
A.write('fooOld.dot')
A.layout('dot') # layout with dot
A.draw('fooOld.png') # write to file

fooOld.dotfooOld.png

Windows10

在win10环境下的安装复杂些,因为graphviz官网是32位版本、pygraphviz不支持py3.4以上版本、c编译错误等等问题,安装过程会出现各种不可预期的错误。
pygraphviz在windows10下的成功解决
在这篇文章中介绍了win10下graphviz和pygraphvi的解决方法,亲测py3.6有效,对于特别需要使用pygraphviz的童鞋可以费劲去试着走一下。

如果只是想要输出模型类关系图的童鞋,注意!我们没必要使用这个完全体,因为graph_models方法可以单独输出.dot文件,完全可以使用graphviz32位将.dot格式转化为PNG或者EPS等等格式

所以使用django_extensions + graphviz
我们只需要安装graphviz(因为网上的链接下载速度都巨慢,这里附一个下载链接,速度很快),然后将其bin目录添加到环境变量PATH中就OK 。
用文章开头的命令使用grah_models输出为.dot文件,然后使用dot命令将其转化为PNG图片。

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值