id,summary,reporter,owner,description,type,status,component,version,severity,resolution,keywords,cc,stage,has_patch,needs_docs,needs_tests,needs_better_patch,easy,ui_ux 10356,proxy models: subclass a model without creating a new table,Ryan Kelly,Malcolm Tredinnick," Following a discussion with Malcolm on django-users, I've implemented support for what's tentatively named ""proxy models"". These provide a way for model subclasses to modify the behaviour of a model without creating a new database table. The canonical example seems to be subclassing the User model - you might want to add additional methods/managers/etc, but you still want to pull data directly from the main users table. Under the attached patch this would look like the following: {{{ class MyUser(User) def extra_method(self): print ""I am a new method"" class Meta: proxy = True }}} MyUser is now simply a different view onto the main User table, rather than a full-blown subclass with a separate table. The main body of the patch is to db/models/base.py, where the meta attributes of proxy models are automatically set up. Since it's now possible for a model to be using the same (table,primary key) pair as one of its base classes, I've added a small optimisation in db/models/sql/query.py that avoids a needless join in this case. There's also some tests and a first stab at some documentation. This patch also integrates with (but doesn't require) ticket #3163, by marking proxy models as unmanaged. The django-users discussion leading to this patch can be found here: http://groups.google.com/group/django-users/browse_thread/thread/fb06ff8e2a296f9c",,closed,"Database layer (models, ORM)",1.0,,fixed,,,Accepted,0,0,0,0,0,0