graph_models

概要:将整个项目或指定app的models结果渲染成图形 [1].

创建一个 GraphViz 格式文件,包含对于指定app的models的描述.可以传入多个app,这样就会把它们渲染到同一个文件中.输出结果通常是一个 .dot 后缀文件.

graph_model 命令可以通过些参数改变生成的图形,比如: 分组模型,包含继承,去除部分模型,改变模型中列的位置等.

新版本的 django-extensions 还可以直接渲染成一张图片,这个功能需要安装 pygraphviz 库.

选择生成图表的库

graph_model 命令可以指定使用哪个库来生成图片,使用参数 --pygraphviz--pydot ,需要安装相应的依赖库.

默认选择 pygraphviz 库生成图表,如果没有指定参数,也没有安装 pygraphviz 库,则会抛出异常.

安装 pygraphviz 库:

$ pip install pygraphviz

安装是可能因为无法编译需要的C扩展而安装失败.那么可能需要尝试其它安装方法,或使用 PyDot.

安装 pydot 库:

$ pip install pyparsing==1.5.7
$ pip install pydot

安装过程很快,注意要安装指定版本的 pyparsing .否则可能会出错:

Couldn't import dot_parser, loading of dot files will not be possible.

默认配置

在项目的配置文件中可以使用 GRAPH_MODELS 配置生成图表时的默认参数:

GRAPH_MODELS = {
  'all_applications': True,
  'group_models': True,
}

配置的参数名与在命令行中的参数名是一样的,只要去掉作为参数的两个建号,并把参数中的减号换成下划线.

模板

Django的模板可以用来生成dot格式文件,通过 pygraphvizpydot 可以把dot文件内容生成图片,这些模板文件是可以扩展和复写的。

使用的模板:

  • django_extensions/graph_models/digraph.dot
  • django_extensions/graph_models/label.dot
  • django_extensions/graph_models/relation.dot

关于如何生成dot文件,可以参考: http://www.graphviz.org/Documentation.php

用例

安装 django-extensions 后,就可以创建 .dot 文件.或通过 graph_models 命令生成图表,看下面的例子:

# 创建一个 .dot 文件
$ ./manage.py graph_models -a > my_project.dot
# 创建一个PNG图片,包含应用的结构,把图片命名为my_project_visualized.png
$ ./manage.py graph_models -a -g -o my_project_visualized.png

# 这个例子中指明了使用哪个Python的图表库
$ ./manage.py graph_models --pygraphviz -a -g -o my_project_visualized.png
$ ./manage.py graph_models --pydot -a -g -o my_project_visualized.png
# 创建一个只包含 'foo' 和 'bar' 应用的 dot 文件
$ ./manage.py graph_models foo bar > my_project.dot
[1]渲染出的是图形的描述语言,需要用特定软件才能看到图形,如果用文本编辑器打开则会看到描述字符