Django Polymorphic
Polymorphic Django model inheritance
Improved model inheritance for Django: querying a base model returns instances of the right subclass automatically, instead of the plain base rows Django gives you by default. A small ergonomic fix that makes class hierarchies in the ORM behave the way you expect.