Today I was having to write an orm query that was going to have to interact with three models and do a group by and my brain was tired and I didn't feel like traversing my models
trying to see which foreign key was what so I was thinking "I wonder if there is a way to produce a nice model image of all my models."
Sure enough there is!!
Enter Django Extensions :) truly one of my favourite third party packages.
$ pip install django-extensions
INSTALLED_APPS = (
...
'django_extensions',
)
The extension docs say
‘graph_models’ requires pygraphviz to render directly to image file.
The graphviz requires me to install it through homebrew
brew install graphviz
pip install pygraphviz
But I then get the following error:
pygraphviz/graphviz_wrap.c:2711:10: fatal error: 'graphviz/cgraph.h' file not found
#include "graphviz/cgraph.h"
I'm running on an M1 chip so it needs a workaround
python -m pip install \
--global-option=build_ext \
--global-option="-I$(brew --prefix graphviz)/include/" \
--global-option="-L$(brew --prefix graphviz)/lib/" \
pygraphviz
You can then run this:
python manage.py graph_models booking partner -o myapp_models.png
Which produces this beauty:
Enjoy!!