前兩天需要辦理一個(gè)項(xiàng)目交接米碰,其中需要給維護(hù)人員提供一份數(shù)據(jù)庫的模型關(guān)系圖汰翠。事實(shí)上Django代碼自身已經(jīng)充分定義了不同Model之間的關(guān)系踪栋,我想應(yīng)該是有通用的工具來執(zhí)行這一操作的倦青。經(jīng)過一番Google之后祭饭,現(xiàn)將教程列出如下芜茵。我用的是macOS系統(tǒng),至于Linux倡蝙,方法的思路應(yīng)該類似的九串。
安裝工具
要實(shí)現(xiàn)自動(dòng)繪制數(shù)據(jù)模型關(guān)系圖,我們需要使用django的一個(gè)第三方app寺鸥,名為django_extensions蒸辆。這個(gè)庫可以通過pip來安裝征炼。安裝完成后將其添加到django的INSTALLED_APPS
中:
INSTALLED_APPS = (
...
'django_extensions',
...
)
在開始使用這個(gè)庫之前,我們還需要安裝一個(gè)依賴躬贡,核心就是這個(gè)app繪圖需要依賴的工具谆奥。
首先通過brew來安裝graphviz
$ sudo brew update
$ sudo brew install graphviz
然后安裝下面這些用來繪制最終結(jié)構(gòu)圖的python包
$ pip install pygraphviz
如果這一安裝過程中出現(xiàn)了沒有找到graphviz頭文件的錯(cuò)誤,你可以從官網(wǎng)下載源碼拂玻,然后手動(dòng)指定graphviz的路徑來安裝:
python setup.py install --include-path=... --library-path=...
實(shí)在不行的話可以選擇Pydot作為繪圖的庫
$ pip install pyparsing==1.5.7
$ pip install pydot
使用
上述步驟完成后就可以開始繪制數(shù)據(jù)結(jié)構(gòu)圖了:
python manage.py graph_models -a -o models.png
下面的圖給出了一個(gè)例子:
我之前曾寫過一個(gè)Django的問卷的Model設(shè)計(jì)范例酸些。這個(gè)范例模型繪制出來的圖形局部如下: