假設一組簡單的繼承模型類,像這樣:如何從模型庫到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