能否用Django Rest Framework生成类图/架构图?90模型Django项目工具求荐
嘿,作为DRF的同好,完全懂你想要高效可视化项目架构的需求!针对你维护的这个拥有90个模型的Django 1.8 + DRF大型项目,我整理了几个靠谱的自动化工具,帮你生成模型类图/架构图:
1. Django Extensions 的
graph_models(首推!) 这是Django生态里最经典的模型可视化工具,对Django 1.8的兼容性拉满,不需要依赖DRF就能直接生成精准的模型类图,完美适配你的场景。
- 先装依赖:
pip install django-extensions pydot,另外还要装系统级的graphviz工具(比如Ubuntu用sudo apt-get install graphviz,Mac用brew install graphviz) - 配置项目:把
'django_extensions'添加到settings.py的INSTALLED_APPS里 - 生成全项目模型图:
python manage.py graph_models -a -o project_full_models.png - 生成指定APP的模型图:
python manage.py graph_models your_app1 your_app2 -o selected_apps_models.png
它会自动识别模型间的外键、一对一、多对多关系,每个模型的字段名、字段类型、约束都会清晰标注出来。90个模型的话,建议按APP拆分生成,避免图太拥挤。
2. Pyreverse(Pylint 附带工具)
如果你想跳出单纯的模型,生成包含DRF序列化器、视图等组件的完整架构图,Pyreverse会是很好的补充。它能分析整个项目的代码结构,生成标准UML类图。
- 安装:
pip install pylint(Pyreverse是Pylint的内置工具,装完就能用) - 生成模型+序列化器的类图:
pyreverse -o png -p my_project my_project/apps/*/models.py my_project/apps/*/serializers.py - 要是想加上视图层,把视图文件路径也加上就行:
pyreverse -o png -p my_project my_project/apps/*/models.py my_project/apps/*/serializers.py my_project/apps/*/views.py
生成的图会展示类的继承关系(比如模型继承models.Model,序列化器继承serializers.ModelSerializer),能帮你从代码结构层面理清DRF组件和模型的关联。
3. 结合DRF API文档的小技巧
既然你已经用Swagger做了API文档,其实可以把Swagger的API结构和模型图结合起来理解:比如先看graph_models生成的模型关系,再对照Swagger里的API端点,就能快速理清每个模型对应哪些API接口。这部分暂时没有完全自动化的工具,但对你这种熟悉DRF的用户来说,手动关联的成本很低。
总结一下:优先用graph_models搞定模型类图,需要扩展到DRF组件的话用Pyreverse,两者结合基本能覆盖你所有的可视化需求啦!
内容的提问来源于stack exchange,提问作者cegprakash
相关产品推荐
相关产品推荐

