假设一组简单的继承模型类,像这样:如何从模型库到Django的派生类?
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')
什么是采取每个found
对象,并把它放回的最佳方式它是派生类?我现在使用的代码是这样的:
for found in found_objects:
if hasattr(found, 'awesomeobject'):
ProcessAwesome(found.awesomeobject)
elif hasattr(found, 'excellentobject'):
ProcessExcellent(found.excellentobject):
但是,感觉就像这是滥用“hasattr”。有没有更好的方式来做到这一点,而不需要在基类中创建一个明确的“类型”字段?
那么..最好看看django-polymorphic ;-) – vdboor 2012-07-10 12:48:34