OperationalError: no such table: django_content_type when using unittest OperationalError: no such table: django_content_type when using unittest django django

OperationalError: no such table: django_content_type when using unittest


Proxy = True

means that there is no actual database table created for the model. So, when you try to reference the model with a ForeignKey, things break (since the ForeignKey has no db table to point to).

If what you are trying to achieve is to have a "Generic abstract" type object with concrete sub-type and want a foreign-key to any of the sub-types I would recommend checking out https://docs.djangoproject.com/en/1.8/ref/contrib/contenttypes/#generic-relations (with a custom limit_choices_to on the ForeignKey to ContentType https://docs.djangoproject.com/en/1.8/ref/models/fields/#django.db.models.ForeignKey.limit_choices_to)

You might also be interested in Django Polymorphic (https://django-polymorphic.readthedocs.org/en/latest/) which does all that and more.


If this is happening in tests as it does for me,maybe this linkcan help, in short the answer is:

Ok, I found a way around the problem, in case anyone ever has the same problem. If you specify TEST_DATABASE_NAME in your settings, it will force sqllite to use a file database instead of in-memory database, and then the problem goes.