Gerando o diagrama de classes do seu projeto Django

03/10/2020 - 3 min de leitura

DJANGO

Muitas vezes pegamos o bonde andando em alguns projetos Django e isso causa, a princípio, uma bagunça na cabeça. Geralmente, vamos batendo cabeça pra entender o projeto. Gastamos tempo analisando como os módulos estão oragnizados e como os modelos se relacionam.

Não são todos os projetos que possuem um diagrama de classes atualizados, condizentes com o estado atual do banco de dados. Para estes casos, os que não possuem o diagrama, existe uma lib que gera essa imagem do diagrama para a gente. É o Graph Models da lib django-extensions.

A lib django-extensions é bastante utilizada no desenvolvimento com o Django. Basicamente ela acrescenta comandos que o manage.py pode executar para a gente. Um desses comandos, é o graph_models, onde conseguimos gerar um arquivo de imagem com o diagrama de classes do seus arquivos de models.py.

Instalação

Primeiro, você tem que instalar o django-extensions.

pip install django-extensions

Após isso, você tem que incluir o módulo django_extensions na sua lista de INSTALLED_APPS.

INSTALLED_APPS = (
    ...
    'django_extensions',
)

Após isso, você "desbloqueou" um monte de comando novo para o arquivo de manage.py. É só digitar, com o virtualenv ativado, o seguinte comando e você verá a lista de comandos disponíveis:

python manage.py --help

E os comandos liberados:

Print do Terminal onde mostro todos os comandos liberados com o django_extensions

Entratanto, para que o comando graph_models funcione normalmente, é preciso que você instale a biblioteca graphviz no seu sistema operacional.

Para Linux:

sudo apt install python3-dev graphviz libgraphviz-dev pkg-config

No MacOS:

brew install graphviz

Após isso, precisamos instalar o driver que vai fazer a ponte entre o nosso projeto Django e o graphviz:

pip install pygraphviz

Na documentação do módulo graph_models, os autores alertam que, se você enfrentar algum erro ao instalar o pygraphviz, você pode tentar outro método alternativo, utilizando o pydot para exportar os arquivos.

Caso você enfrente o problema descrito acima, que eu acho bem difícil de acontecer, tente instalar esses pacotes:

pip install pyparsing pydot

Configuração do graph_models

Você pode adicionar a seguinte configuração no seu arquivo de settings.py:

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

As opções são auto explicativas! São as opções que o graph_models vai gerar o grafo/diagrama de classe.

Gerando o diagrama

Você pode gerar o diagrama com o seguinte comando (utilizando o driver do pygraphviz):

python manage.py graph_models --pygraphviz -a -g -o meu_diagrama.png

E caso vcê esteja usando o pydot, é só trocar o --pygraphviz por --pydot.

Ao final, ele vai gerar a imagem que representa o diagrama de classe do seu projeto Django. Esse processo de gerar a imagem pode demorar ou não. Vai depender do tamanho do seu projeto.

Aqui é o diagrama de um projeto que monitora se meus sites estão no ar, que utiliza o celery por debaixo dos panos:

Diagama de classe gerado de exemplo

Você também pode gerar o diagrama somente para os models que você quiser, incluindo ou excluindo classes. Tá tudo na documentação que eu mandei lá em cima.

Foto da capa by Campaign Creators on Unsplash

Compartilhe

Twitter