Django graph models. Imagen modelos.
Vamos a sacar una imagen de la base de datos de django que estemos usando.
Probado en Django 1.9, 1.10 y 1.11.
Encontramos dos métodos de hacerlo, mediante pip o también con apt. Pero antes los pasos comunes a ambos métodos.
Debemos empezar instalando las extensiones de django y agregándolas a nuestras installed apps.
Dentro de nuestro virutalenv o en el sistema. Ojo que para python3 podrías tener que escribir pip3 en lugar de pip:
pip install django-extensions
En nuestro settings.py de django le agregamos la siguiente línea:
INSTALLED_APPS = [
# Otras apps
# La nueva
'django_extensions',
]
Si hasta aquí ha ido bien puedes seguir estas instrucciones.
pip install pygraphviz
pip install pyparsing==1.5.7
pip install pydot
El paquete pip por defecto quizás no te funcione y debas especificar una versión compatible.
pip install pygraphviz==1.4rc1
En este enlace tienes la información al respecto.
Aquí a su github pages
pip install pyparsing
pip install pydot
Si con pip exclusivamente no te ha funcionado quizás te interese esta opción.
Vamos a instalar graphviz
mediante el gestor de paquetes, en este ejemplo
usamos Ubuntu 16.04.
Usando apt:
sudo apt install graphviz graphviz-dev
Ahora instalamos pygraphviz mediante pip. Revisa el método 1.
Debemos generar el entorno con virtualenv virtualenv --system-site-packages
de manera que así usa los paquetes instalados en el sistema en lugar de descargarlos
de cero. Recuerda especificar la versión de python si usas pyton3. Puedes hacer
así: virtualenv virtualenv --system-site-packages --python=python3
.
Estos son los ejemplos oficiales que también te pongo a continuación por si cambia la ruta:
Crear fichero dot:
Create a dot file
$ ./manage.py graph_models -a > my_project.dot
Crear imagen png con agrupación de aplicación:
# Create a PNG image file called my_project_visualized.png with application grouping
$ ./manage.py graph_models -a -g -o my_project_visualized.png
Mismo ejemplo anterior pero especificando la librería a emplear:
# Same example but with explicit selection of pygraphviz or pydot
$ ./manage.py graph_models --pygraphviz -a -g -o my_project_visualized.png
$ ./manage.py graph_models --pydot -a -g -o my_project_visualized.png
Crear una imagen png solamente de las aplicaciones "foo" y "bar" del proyecto:
# Create a graph for only certain models
$ ./manage.py graph_models -a -I Foo,Bar -o my_project_subsystem.png
Crear un fichero dot solamente de las aplicaciones "foo" y "bar" del proyecto:
# Create a dot file for only the 'foo' and 'bar' applications of your project
$ ./manage.py graph_models foo bar > my_project.dot
Enjoy!