Как перейти от базового класса модели к производному классу в Django?

Предполагается простой набор унаследованных классов Model, например:

class BaseObject(models.Model): 
    some_field = models.SomeField(...)

class AwesomeObject(BaseObject): 
    awesome_field = models.AwesomeField(...)

class ExcellentObject(BaseObject): 
    excellent_field = models.ExcellentField(...)

и запрос, который выглядит следующим образом:

found_objects = BaseObject.objects.filter(some_field='bogus')

Как лучше всего взять каждый найденный объект и превратить его обратно в производный класс? Код, который я использую сейчас, такой:

for found in found_objects:
    if hasattr(found, 'awesomeobject'): 
        ProcessAwesome(found.awesomeobject)
    elif hasattr(found, 'excellentobject'): 
        ProcessExcellent(found.excellentobject): 

Но мне кажется, что это злоупотребление hasattr. Есть ли лучший способ сделать это, не создавая явного поля «тип» в базовом классе?

8
задан slacy 10 June 2011 в 18:56
поделиться