There's this cool project called django-extensions that (among other things) adds a lot of commands to django's manage.py
offerings. One of which is ./manage.py graph_models [appname]
which will generate a nice graph displaying the relationships among all of your Models. This comand needs pyGraphViz, though, and I was a little disappointed when i discovered I couldn't install pyGraphViz with pip install pygraphviz
. (ok, a lot disappointed).
I eventually got this working, and here's how:
-
First, install the development snapshot of GraphViz: http://graphviz.org/Download_macos.php (I used graphviz-2.27.20100713.0445.pkg)
-
Next, download the pygraphviz source code from http://networkx.lanl.gov/pygraphviz/download.html. (Again, I got pygraphviz-0.99.1/ )
-
Here's the fun part. You need to edit pygraphviz's setup.py file (located at pygraphviz-0.99.1/setup.py for me). Find the following two lines of code:
library_path=None
include_path=None
And change them to
library_path='/usr/local/lib/graphviz/'
include_path='/usr/local/include/graphviz/'
You also might want to verify that the above directories exist.
-
Now, active your virtualenv (workon <whatever_your_virtualenv_is_named>)
-
Finally, just run
python setup.py install
That's it! This installed pygraphviz in my activated virtualenv, and I can now use ./manage.py graph_models
to my heart's desire.
I should mention that I'm using distribute (and it may be safe to assume that if you're using virtualenv, you're probably also using distribute).