problems with django_extension's graph_models?

Published on Nov. 15, 2013, 2:14 p.m.

django django_extensions python

I recently ran into an issue when trying to generate an image of my project's models using django_extension's graph_models command. Unfortunately, googling for the error didn't turn up any solutions, so I'm dumping some info here (just in case!).

some background

For the record, I was using django_extensions, version 1.2.5 (the latest release as of this post), and Django 1.4.2 (yeah... it's old)

Running the following command:

$ ./manage.py graph_models my_app > my_models.dot

Gave me the following error

Traceback (most recent call last):
  File "./manage.py", line 10, in 
    execute_from_command_line(sys.argv)
  File "/home/vagrant/.virtualenvs/my_app/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 443, in execute_from_command_line
    utility.execute()
  File "/home/vagrant/.virtualenvs/my_app/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 382, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/home/vagrant/.virtualenvs/my_app/local/lib/python2.7/site-packages/django/core/management/base.py", line 196, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "/home/vagrant/.virtualenvs/my_app/local/lib/python2.7/site-packages/django/core/management/base.py", line 232, in execute
    output = self.handle(*args, **options)
  File "/home/vagrant/.virtualenvs/my_app/local/lib/python2.7/site-packages/django_extensions/management/commands/graph_models.py", line 72, in handle
    dotdata = generate_dot(args, cli_options=cli_options, **options)
  File "/home/vagrant/.virtualenvs/my_app/local/lib/python2.7/site-packages/django_extensions/management/modelviz.py", line 168, in generate_dot
    if field == pk:
  File "/home/vagrant/.virtualenvs/my_app/local/lib/python2.7/site-packages/django/db/models/fields/__init__.py", line 128, in __cmp__
    return cmp(self.creation_counter, other.creation_counter)
AttributeError: 'NoneType' object has no attribute 'creation_counter'

The problem?

I'm not entirely sure, but it seems related to this issue.

The solution

Rather, the solution that worked for me (YMMV): Uninstall your current version:

pip uninstall django-extensions

Then install the current development version from github:

pip install -e git+https://github.com/django-extensions/django-extensions.git#egg=django_extensions

Hope that helps someone else!

comments powered by Disqus