Model inheritance vermeiden, Constraints verwenden
Eine Anregung: Ähnliche Django-Models sollte man besser nicht durch Vererbung (model inheritance) ableiten von einem abstrakten Parent-Model, sondern in ein und demselben Model unterbringen und die Varianten per Constraints voneinander isolieren. Dabei ist es nützlich, mehrere zugehörige Abfragen in einem einzigen Constraint per Oder zu verknüpfen.
Das unterschiedliche Verhalten der Varianten kann über Proxy-Modelle realisiert werden. Diese ermöglichen es, bei gleichartiger Struktur in der Datenbank den Objekten im Programm über spezifische Methoden ein unterschiedliches Verhalten zu geben.
Proxy-Modelle können übrigens gut verwendet werden, um unterschiedliche Sortierungen zu realisieren. Damit lassen sich (eventuell „teure“) Sortierungen vermeiden, wenn man sie nicht braucht.