Generar diagramas de clase UML a partir de modelos Django
Introducción
Para visualizar y entender mejor la estructura de un proyecto en Django podemos crear diagramas de clases UML a partir de los modelos definidos.
Un diagrama de clases en el Lenguaje de Modelado Unificado (UML) es un tipo de diagrama con estrctura fija que describe la estructura de un sistema al mostrar sus clases, atributos, operaciones (o métodos) y la relación entre los objetos.
Para hacer esto usamos el comando especial incluido en el paquete django-extensions llamado: graph_models, que significa graficar modelos o modelos en grafo.
Crear un archivo GraphViz dot para las aplicaciones especificadas en
models.py
. Puedes pasar más de un nombre de aplicación y todas van a ser combinadas en un solo modelo. La imagen es generada directamente en un archivo dot.
Pasos
1. Instalar django extensions
Asumiendo que ya tienes Django instalado ( para este ejemplo voy a usar el proyecto Wagtail ), luego instalamos django extensions con pip install django-extensions.
$ pip install django-extensions
Collecting django-extensions
Using cached django_extensions-2.0.6-py2.py3-none-any.whl
Collecting six>=1.2 (from django-extensions)
Using cached six-1.11.0-py2.py3-none-any.whl
Installing collected packages: six, django-extensions
Successfully installed django-extensions-2.0.6 six-1.11.0
2. Add to installed apps
Para hacer que Django use el paquete recién instalado, lo agregamos a
INSTALLED_APPS
en el archivo de configuración <project>/settings.py
,
en un proyecto Wagtail llamado mysite
está ubicado en
mysite/settings/base.py
:
INSTALLED_APPS = (
...
'django_extensions',
...
)
3. Instalar el generador de diagramas
Puedes elegir entre dos generadores:
- Graphviz o
- Dotplus
antes de usar el comando, o se obtiene un mensaje de error como este:
$ python manage.py graph_models -a -o myapp_models.png
CommandError: Neither pygraphviz nor pydotplus could be found to generate the image
Prefiero usar pydotplus
ya que es más fácil instalarlo que
Graphviz y sus dependencias por lo que usamos pip install pydotplus.
$ pip install pydotplus
Collecting pydotplus
Collecting pyparsing>=2.0.1 (from pydotplus)
Using cached pyparsing-2.2.0-py2.py3-none-any.whl
Installing collected packages: pyparsing, pydotplus
Successfully installed pydotplus-2.0.2 pyparsing-2.2.0
4. Generar diagramas
Ahora tenemos todo instalado y pronto para generar diagramas con el comando python manage.py graph_models.
$ python manage.py graph_models -a -o myapp_models.png
Esto nos da el diagrama de clases entero de Wagtail:
O agrupado por aplicación (-o
):
$ ./manage.py graph_models -a -g -o my_project_visualized.png
Por último, vamos a generar el diagrama de clases de los modelos de Django (v2.0.3):
Conclusión
Más allá que en el diseño de una aplicación se hagan una serie de diagramas al inicio, luego pueden volverse rápidamente obsoletos después de un tiempo. Esta es una técnica útil y fácil de mantener sincronizados los diagramas con el estado actual de un proyecto.
Puedes encontrar una descripción completa de todas las opciones del
comando graph-models
en
https://django-extensions.readthedocs.io/en/latest/graph_models.html.
Referencias
- Generar diagramas de clase UML a partir de modelos Django
Artículos
Excepto dicho lo contrario, el contenido de ésta página está bajo la licencia CC BY-NC-ND 4.0 . Términos y Privacidad.
Hecho con SimpleIT Hugo Theme
·