Skip to content
Reproduces a problem with deleting a model object that has a subclass not in INSTALLED_APPS.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.

Model subclass not in INSTALLED_APPS incorrectly collected during object deletion

Reproduces a bug in Django where you have a model that's installed (in INSTALLED_APPS), and a subclass that's NOT installed (so it shouldn't be used), but deleting an instance of the parent model causes a crash.

For example, if there is a Session subclass somewhere in your code, but not in an INSTALLED_APPS, then the following code will fail:

s = Session()
from datetime import datetime
s.expire_date =

It fails here, when trying to delete objects:

Traceback (most recent call last):
  File "/home/installuser/Dropbox/projects/ischool/delete_related_test/project/demo/", line 14, in test_demo
  File "/home/installuser/Dropbox/projects/ischool/delete_related_test/ve/local/lib/python2.7/site-packages/django/db/models/", line 575, in delete
  File "/home/installuser/Dropbox/projects/ischool/delete_related_test/ve/local/lib/python2.7/site-packages/django/db/models/", line 175, in collect
    if not sub_objs:
  File "/home/installuser/Dropbox/projects/ischool/delete_related_test/ve/local/lib/python2.7/site-packages/django/db/models/", line 130, in __nonzero__
  File "/home/installuser/Dropbox/projects/ischool/delete_related_test/ve/local/lib/python2.7/site-packages/django/db/models/", line 118, in _result_iter
  File "/home/installuser/Dropbox/projects/ischool/delete_related_test/ve/local/lib/python2.7/site-packages/django/db/models/", line 875, in _fill_cache
  File "/home/installuser/Dropbox/projects/ischool/delete_related_test/ve/local/lib/python2.7/site-packages/django/db/models/", line 291, in iterator
    for row in compiler.results_iter():
  File "/home/installuser/Dropbox/projects/ischool/delete_related_test/ve/local/lib/python2.7/site-packages/django/db/models/sql/", line 763, in results_iter
    for rows in self.execute_sql(MULTI):
  File "/home/installuser/Dropbox/projects/ischool/delete_related_test/ve/local/lib/python2.7/site-packages/django/db/models/sql/", line 818, in execute_sql
    cursor.execute(sql, params)
  File "/home/installuser/Dropbox/projects/ischool/delete_related_test/ve/local/lib/python2.7/site-packages/django/db/backends/sqlite3/", line 337, in execute
    return Database.Cursor.execute(self, query, params)
DatabaseError: no such table: utility_sessionwithextrafield

It seems that the model was registered just by being loaded, and associated itself with a parent model (superclass), but its database table never got created because it wasn't in INSTALLED_APPS.

So these two should be consistent with each other: either we only register models for INSTALLED_APPS, or we create database tables for all registered models even if they're not in INSTALLED_APPS.

Something went wrong with that request. Please try again.