Я использовал другие методы наследования django, потому что столкнулся с той же проблемой, с которой вы столкнулись. Я не уверен, что есть элегантное решение. В конечном счете, вам нужно выполнить несколько запросов к БД и объединить результаты. Я не могу представить, что ORM поддерживает это.
Вот мой обычный хакерский подход к этой ситуации:
class NotQuiteAbstractBaseClass(models.Model):
def get_specific_subclass(self):
if self.model1:
return self.model1
elif self.model2:
return self.model2
else:
raise RuntimeError("Unknown subclass")
class Model1(NotQuiteAbstractBaseClass):
def whoami(self):
return "I am a model1"
class Model2(NotQuiteAbstractBaseClass):
def whoami(self):
return "I am a model2"
Затем вы можете запросить весь список следующим образом:
for obj in NotQuiteAbstractBaseClass.objects.iterator():
obj = obj.get_specific_subclass()
print obj.whoami()